搜了一下已经有人分析的比较清楚了http://blog.csdn.net/hnust_xiehonghao/article/details/8005832
顺便提一下下面的代码,sum要声明成long long int, 因为按照题目的描述N*Mi最大可以是10的12次方,超过了int(32位)4*10的10次方的大小,另外很有趣的是不能偷懒将其他的int型变量N, num, val, max都设置成long long int, 笔者因此而LTE.
#include<cstdio>
using namespace std;
int main()
{
int N, num, val, max;
long long int sum;
//freopen("in.txt", "r", stdin);
scanf("%d", &N);
while(N)
{
--N;
sum = max = 0;
scanf("%d", &num);
for(int tmp = 0; tmp < num; ++tmp)
{
scanf("%d", &val);
sum += val;
if(val > max)
{
max = val;
}
}
if(sum - 2*max + 1 >= 0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}