题意:给你一些竹子的高度,规则是一个竹子长高x,其他所有竹子都减少x,问这些竹子是否都能到达同一高度
样例:
2
3
2 4 2
2
1 2
out : yes no
思路:如果只有两棵竹子,那么要想他俩能达到同一高度,那么他俩的差必须是偶数,同理,三棵时,看第一二棵树差必须是偶数,三四颗树差必须是偶数,那么要想满足达到同一高度,必须满足,排序后两两之间相差高度必须都是偶数!
代码:
#include <iostream> #include<cstring> #include<vector> #include<algorithm> #include<cstdio> using namespace std; bool judge[100005]; int num[100005]; int main() { int T; cin>>T; while(T--) { int n; cin>>n; memset(judge,0,sizeof(judge)); int len = 0; for(int i=0;i<n;i++) { int a; scanf("%d",&a); if(!judge[a]) { num[len++] = a; judge[a]=1; } } sort(num,num+len); bool sign=false; for(int i=0;i<len - 1;i++) { if((num[i+1]-num[i])%2!=0) { sign=true; break; } } if(sign) cout<<"no"<<endl; else cout<<"yes"<<endl; } return 0; }