首页 > 代码库 > (HDU)1205 -- 吃糖果

(HDU)1205 -- 吃糖果

题目链接: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\n");
28         else printf("No\n");
29     }
30     return 0;
31 }

 

(HDU)1205 -- 吃糖果