题解 CF2050B
HYdroKomide · · 题解
题意:
给定一个序列,每次可以对相隔一个元素的两个值一个
思路:
考虑经典黑白格染色,将序列染成黑白间隔的颜色。所有操作都只能在某一种颜色上进行,而序列所有元素值之和一定不变。
因此,所有元素能够相等,当且仅当奇数下标的元素平均值是整数,而且奇数下标元素平均值等于偶数下标的元素平均值。
要开 long long。
程序如下:
#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;
}