思路:听说这要用鸽巢原理,其实我根本不晓得这是什么,这道题很容易看出来解法。
如果我们要把这些全部都吃完,肯定是和最大值有关系的,先来看几个例子,
4 1 1最大值为4,最后4还会剩下2。4 2 1最大值为 4,经过相互相减后,全部为0。
其实我们可以将这个数组分成两部分,一部分为最大值一个,另外一部分为剩下的数值,
只要(剩下数的和-最大数>=0)就输出Yes,否则输出No。
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
int t,n,num;
scanf("%d",&t);
while(t--)
{
__int64 maxn=-1,sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num);
sum+=num;
if(num>maxn)
maxn=num;
}
//printf("%d,%d\n",maxn,sum);
if(sum-maxn+1>=maxn)
puts("Yes");
else
puts("No");
}
return 0;
}