超级传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1205
思路:只要除了数目最多的糖果以外的其他所有糖果的数目之和加1(小心这里要用__int64或long long),大于等于数目最多的糖果数,就能吃完,否则不能。
极限情况是:A*A*A*......*A*A*A (A代表数目最多的糖果,*代表其他糖果),这样无论*是什么,都可以满足题意。但是如果*的数目比极限情况更少的话,就不能满足题意了。
#include<stdio.h>
int main () {
int t,n,i,j,a,max;
long long sum;
scanf("%d",&t);
for (i=0;i<t;i++) {
sum = max = 0;
scanf("%d",&n);
for (j=0;j<n;j++) {
scanf("%d",&a);
if (max < a) max = a;
sum += a;
}
if (sum-max+1>=max) printf("Yes\n");
else printf("No\n");
}
return 0;
}