首页 > 其他分享 >桐柏邀请赛 S15 题解

桐柏邀请赛 S15 题解

时间:2023-08-09 12:11:47浏览次数:31  
标签:int 题解 tmpa S15 read while maxn -- 邀请赛

定位:给中低段位一点压力,给中高段位一点信心!

A

发现只是单向变换 \((0\to 1)\),用两个变量维护位置最小值和最大值即可。

#define int long long
int n,q,maxn,minn=1e18+1,x;

signed main(){
	n=read(),q=read();
	while(q--){
		x=read();
		maxn=max(maxn,x);
		minn=min(minn,x);
		print(maxn-minn+1),puts("");
	}
	return 0;
}

B

不知道有没有人想麻烦,本质是均摊分析。

我们模拟进位过程即可,复杂度为 \(O(n+\log n+q)\)。

理由:每操作一次最多只会增加一个 \(1\),所以模拟进位消 \(1\) 的总次数是 \(n+q\) 级别的。

空间要开到 \(n+\log n\),要不然会被卡

const int N=1e6+30;
int n,q,k,ans;
bool a[N];
char c;

int main(){
	n=read();
	for(int i=0;i<n;++i)cin>>c,a[n-i-1]=c-'0';
	q=read();
	while(q--){
		k=read(),ans=1;
		while(a[k])a[k++]=0,ans++;
		a[k]=1,print(ans),puts("");
	}
	n+=log2(n)+1;
	while(!a[n])n--;
	for(int i=n;i>=0;--i)putchar(a[i]?'1':'0');
	return 0;
}

C

题意即每次使 \(a\) 和 \(b\) 中数分别匹配,求所有匹配方式中 \(\max(a_i+b_i)\) 的最小值,其中 \((a_i,b_i)\) 是第 \(i\) 组匹配。

发现最优匹配是按大小正序 \(a\) 和倒序 \(b\) 匹配,证明可以考虑反证法或归纳法。

值域较小,考虑从值域入手。开一个值域大小的桶,用两个指针双向(一个从 \(1\to 100\),另一个从 \(100\to 1\))维护,每次至少有一个指针会移动,单次回答复杂度 \(O(V)\),总复杂度 \(O(nV)\)。

const int N=1e5+5,V=105;
int n,a[N],b[N],ta[V],tb[V],tmpa[V],tmpb[V];

int qry(){
	for(int i=1;i<=100;++i)tmpa[i]=ta[i],tmpb[i]=tb[i];
	int l=1,r=100,maxn=0,tmp;
	while(!tmpa[l])l++;
	while(!tmpb[r])r--;
	while(l<=100&&r>=1){
		tmp=min(tmpa[l],tmpb[r]);
		tmpa[l]-=tmp,tmpb[r]-=tmp;
		maxn=max(maxn,l+r);
		while(!tmpa[l])l++;
		while(!tmpb[r])r--;
	}
	return maxn;
}

int main(){
	n=read();
	for(int i=1;i<=n;++i){
		a[i]=read(),b[i]=read();
		ta[a[i]]++,tb[b[i]]++;
		print(qry()),puts("");
	}
	return 0;
}

D

显然最小字典序字符串可以先用一次删除末尾操作,再用一些复制操作完成。

我们先想一个算法,再打补丁。

第一个字符一定存在,我们记 \(a_0\) 为第一个字符。

最主要的问题是删到哪?

删掉以从前往后第一个大于 \(a_0\) 的字符为首的后缀。

反例:dbda,若显然 dbdbdb... 劣于 dbdadb...

我们考虑在 \(a_i\) 与 \(a_0\) 相同时比较它们的下一位,直至一个不相同的。

比较过程:令 \(a_{j\ \bmod\ i}\) 为 \(a_0\) 的比较指针,\(a_k\) 为 \(a_i\) 的比较指针。

注意,\(a_0\sim a_i\) 全都小于等于 \(a_0\)。

  • 若 \(a_{j\ \bmod\ i}<a_k\),则删去以 \(i\) 为首的后缀;
  • 若 \(a_{j\ \bmod\ i}>a_k\),则令 \(i\gets k\)(因为 \(a_0\sim a_k\) 都小于等于 \(a_0\)),继续向后;
  • 若 \(k\) 到末尾还相同,则 \(a_0\sim a_{i-1}\) 是一个循环节,删去以 \(i\) 为首的后缀即可(WA on test 2 可以参考)。

还有一些细节,可以看看代码:

const int N=5e3+5;
int n,m;
string a; 

int main(){
	cin>>n>>m>>a;
	int pos=n;
	for(int i=1;i<n;++i){
		if(a[0]<a[i]){pos=i;break;}
		if(a[0]>a[i])continue;
		bool f=0;
		for(int j=0,k=i;k<n;++j,++k){
			if(a[j%i]<a[k]){f=1;break;}
			else if(a[j%i]>a[k]){i=k;break;}
			else if(k==n-1){f=1;break;}
		}
		if(f){pos=i;break;}
	}
    for(int i=0;i<m;++i)cout<<a[i%pos];
	return 0;
}

标签:int,题解,tmpa,S15,read,while,maxn,--,邀请赛
From: https://www.cnblogs.com/Daidly/p/17616536.html

相关文章

  • CF1857B Maximum Rounding 题解
    题面题目大意给定\(T\)组数据,每组数据一个自然数\(n\),可以多次选择第\(k\)位数进行四舍五入,求出四舍五入后该数的最大值。分析思路思想:贪心。这里给定了两种操作。四舍和五入。显然我们想要让最终的结果最大,我们的操作只能进行五入而不可以进行四舍。因为如果我们进行了......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台级联时,通道上传上级宇视平台无法接收的问
    LntonGBS是基于公安部推出的GB/T28181协议开发的视频平台,在安防监控领域应用广泛。下面是一些关于LntonGBS平台的主要特点:GB/T28181协议兼容性、视频直播和转码、云端录像和存储、语音对讲和警告功能、平台级联功能。通过以上的功能和特点,LntonGBS平台能够满足安防监控领域各类场景......
  • sudo: a terminal is required to read the password; either use..... 问题解决方法
    转载自:sudo:aterminalisrequiredtoreadthepassword;eitheruse……问题解决方法_akaiziyou的博客-CSDN博客问题sudo:aterminalisrequiredtoreadthepassword;eitherusethe-Soptiontoreadfromstandardinorconfigureanaskpasshelper出现场景某个......
  • Codeforces Round 891 (Div. 3) 题解
    A.ArrayColoring因为:偶数+偶数=偶数奇数+奇数=偶数奇数+偶数=奇数所以设\(s1\)为奇数之和,\(s2\)为偶数之和\(s2\)必定是偶数如果奇数的个数为偶数,则\(s1\)为偶数;否则是奇数而在\(s1\)为奇数时,即使拿一个奇数加到\(s2\)里,那么也是不合法的所以直接判断奇数的......
  • CF1477E题解
    洛谷博客链接此篇未投洛谷题解,因为写得太菜了qwq。CF1477E&大户爱的送分题题解(CF1477E为我出的校内模拟赛的一道题——《大户爱的送分题》的待修版本)大户爱的送分题文件名OhtoAiFirst.cpp/.in/.out,时间限制\(1\)秒,空间限制\(256MB\)。注意第一个字母是O而不是0。题目背......
  • CF1030F题解
    CF1030F题解传送门 更好的阅读体验简化题意:有$n$个小球,每个小球在位置$a_i$,移动一格的代价是$w_i$,有两种操作,一种是将$w_x$改成$y$,一种是查询$\min\limits_{x=1}^n\{\sum\limits_{i=l}^rw_i\times(|a_x-a_i|+|x-i|)\}$。思路很好的线段树二分练手题。对于每......
  • CF1239E 题解
    CF1239E给定\(2n\)个数,将其重排成\(2\timesn\)的矩阵,最小化:从\((1,1)\)走到\((2,n)\),只可向右下走的所有方案中,途径所有数的和的最大值。\(n\le25,|V|\le5\times10^4\)。考场上有个\(n\le10\)的包,分值高达\(40\)。注意到\(\binom{20}{10}\approx10^5\)可枚......
  • 2023年 8月7日普及组南外集训题解
    A国家集训队题解注意数据已经是有序的,我还搞了个排序,我是智障所以只需要将第5个人到第16个人的成绩都预设成300,再把前4个人的成绩都预设成0,再看有没有人能超过第4个人就行了ac代码#include<iostream>usingnamespacestd;constintN=20;inta[N],ans=4;intmain(......
  • 2023年百度之星程序设计竞赛初赛1题解
    每次出题都出其不意---->群友蓝桥国三ac一道题根据官方的视频题解整理依据难度的划分第五题:促销糖果 分析:从答案出发想吃K个糖果,必定有k个糖纸,考虑换购,则有一张糖纸是不可以换的(因为你必须至少要买一颗糖果)则换购的数量为(k-1)/减去换购的糖果则是买的糖果packageLi2209;i......
  • CodeForces CF1846G 题解
    CodeForcesCF1846G题解CodeForces题目链接洛谷题目链接标准答案是状压之后,转化成Dijkstra算法跑最短路。我这里提供一个不一样的思路。题意简述主人公得了病,有部分类型的症状。所有类型症状共有\(n\)种,用长为\(n\)的01串表示是否有那种症状。共有\(m\)种药,吃......