题目链接:http://vjudge.net/problem/HDU-1205
分析:我们只要考虑数目最多的那种糖果,假设有N个,它中间有N-1个空,如果剩下的所有糖果可以将这N-1个空填上,那么肯定可以达到题目的要求。因为考虑的已经是数目最多的糖果了,所以一定存在某种顺序将剩下的糖果全部隔开。
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <iostream> 5 #include <algorithm> 6 #include <string> 7 #include <cstdlib> 8 9 using namespace std; 10 11 long long num[1000010]; 12 13 int main() 14 { 15 long long n,i,sum; 16 int t; 17 scanf("%d",&t); 18 while(t--) 19 { 20 scanf("%I64d",&n); 21 for(i=1;i<=n;i++) 22 scanf("%I64d",&num[i]); 23 sort(num+1,num+1+n); 24 sum=0; 25 for(i=1;i<n;i++) 26 sum+=num[i]; 27 if(num[i]<=sum+1) printf("Yes "); 28 else printf("No "); 29 } 30 return 0; 31 }