专栏文章
题解 CF2050B
CF2050B题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqtvfr3
- 此快照首次捕获于
- 2025/12/04 10:39 3 个月前
- 此快照最后确认于
- 2025/12/04 10:39 3 个月前
题意:
给定一个序列,每次可以对相隔一个元素的两个值一个 ,一个 ,问随意操作后是否可以使得序列所有值相等。
思路:
考虑经典黑白格染色,将序列染成黑白间隔的颜色。所有操作都只能在某一种颜色上进行,而序列所有元素值之和一定不变。
因此,所有元素能够相等,当且仅当奇数下标的元素平均值是整数,而且奇数下标元素平均值等于偶数下标的元素平均值。
要开 long long。
程序如下:
CPP#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int T,n;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
long long tot1=0,tot2=0;
for(int i=1;i<=n;i++){
int a;
scanf("%d",&a);
if(i%2==1)tot1+=a;
else tot2+=a;
}
if(tot1%((n+1)/2)!=0||tot2%(n/2)!=0||(tot1/((n+1)/2))!=tot2/(n/2))printf("NO\n");
else printf("YES\n");
}
return 0;
}
THE END
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...