题目大意:Gardon有N种糖果,他吃糖果的时候有一个癖好,就是,当吃完一种糖果之后,下次一定要吃另一种糖果,输入每种糖果的数量,问他是否能将这些糖果吃完。
解题报告:其实一开始就想到应该判断糖果数量最大的那种糖果和总的糖果数量满足这种关系: (sum-max)>=(max-1),但交上去之后WA了,以为是这种思想错了,但看了别人解题报告之后才知道,原来还要注意的是数据范围可能比较大,改了之后就AC了。解这题的思想就是先找出数量最大的那种糖果的数量,然后再求出其它的糖果的总数量,这就可以看成是两种糖果在轮流吃了,所以应该满足那个关系。
1 #include<cstdio> 2 int main() { 3 int n,T; 4 __int64 d,sum,max; 5 while(scanf("%d",&T)!=EOF) { 6 while(T--) { 7 scanf("%d",&n); 8 sum=max=0; 9 while(n--) { 10 scanf("%I64d",&d); 11 sum+=d; 12 if(d>max) 13 max=d; 14 } 15 if((sum-max)>=(max-1)) 16 printf("Yes\n"); 17 else printf("No\n"); 18 } 19 } 20 return 0; 21 }