Gym 10135D 思维

题意:给你一些竹子的高度,规则是一个竹子长高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;
}

猜你喜欢

转载自blog.csdn.net/qq_40772692/article/details/80164629