2022/5/22 CF比赛总结
比赛链接:此处
CodeForces比赛(×)
看样例找规律(√)
盲猜能力评测(√)
视力检测(√)
A.String Building
- 不是我做的;
B.Consecutive Points Segment
- 题意就是对每个数至多进行一次 \(+1/-1\) 的操作,将数列变成连续不断的递增数列;
- 首先目测一下样例,我们可以猜测:结论和相邻两数的的差有关。
 显然的,1 4这样的可以,而1 5不行(至多变成2 4),说明相邻两数的差不能大于 \(3\)。
 同样显而易见地可以发现,这个差的关系是具有传递性的(1 3 6至多变成2 3 5),所以这说明整个数列的最大值与最小值之差不能超过其长度 \(+2\)。
AC code
#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int s=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		s=s*10+int(ch-'0');
		ch=getchar();
	}
	return s*f;
}
const int N=2e5+10;
int t;
int n;
int a[N];
int main(){
	t=read();
	while(t--){
		n=read();
		int cnt=0;
		for(int i=1;i<=n;++i){
			a[i]=read();
			if(i>1) cnt+=a[i]-a[i-1]-1;
		}
		if(cnt>2) puts("NO");
		else puts("YES");
	}
	return 0;
} 
C.Dolce Vita
- 首先由贪心的思想得到,如果要买尽可能多的糖果,那么从价格低的开始买一定是最优的;
- 由于后来的每天所有糖果的价格都会上涨,所以不同糖果之间的相对大小关系不会变;
- 首先 \(sort\) 一下,然后从前往后扫到第 \(0\) 天时可以选的价格最大的糖果处(即前面的和 \(\le x\) 的最后一个),先把第 \(0\) 天计算了。
 然后判断 \(sum\) 和 \(x\) 的差,如果这个值是现在每天选择的糖果数量的 \(k\) 倍及以上,说明还可以保持 \(k\) 天这种组合,
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号