题意:给出若干个数,每次选两个数减1,那么是否可以让最后所有的数都变成0
思路:抽屉原理,选出最大的数maxn,和计算出所有数sum如果sum为奇数那么不可能有这种方法,假设有maxn个抽屉,然后剩下的从第一个抽屉到最一个抽屉来回放,那么一个抽屉里不可能会有重复的数字,然后我们就会发现如果剩下的数可以放满一轮抽屉那么就一定可以每次从抽屉取两个然后把所有的抽屉里的东西取空
#include <stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
int main(int argc, char *argv[])
{
int n;
while(cin>>n)
{
ll sum=0,maxn=-1;
int i;
ll a;
for(i=0;i<n;i++)
{
cin>>a;
sum+=a;
maxn=max(maxn,a);
}
if(sum%2==1)
printf("No\n");
else
{
if(sum-maxn>=maxn)
{
printf("Yes\n");
}
else
printf("No\n");
}
}
return 0;
}