//思路:把所有糖果分成两堆,一堆是数目最多的一种糖果max,另外一堆是剩下的所有糖果之和r。
//如果 max > r+1 则表示不能按题目要求把糖果吃完。
Code
#include <stdio.h>
#include <stdlib.h>
int main()
{
freopen("acm.txt","r",stdin);
int n,m,i;
__int64 sum,f,max,r;
scanf("%d",&n);
while( n-- )
{
scanf("%d",&m);
sum=0; max=0;
for(i=0;i<m;i++)
{
scanf("%I64d",&f);
if( f>max )
max=f;//保存数目最多的一种糖果
sum=sum+f;//sum保存所有糖果之和
}
r=sum-max;//剩下的所有糖果之和
if( max>r+1 )
printf("No\n");
else
printf("Yes\n");
}
return 0;
}