Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=1205

 

吃糖果

 

Problem Description

HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。

 
Input
第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。
 
Output
对于每组数据,输出一行,包含一个"Yes"或者"No"。
 
Sample Input
2
3
4 1 1
5
5 4 3 2 1
 
Sample Output
No Yes
Hint
Hint
Please use function scanf
 
Author
Gardon
 
Source
Gardon-DYGG Contest 2
 
Recommend
JGShining
 
 
我的理解
刚看这道题被吓到了,仔细一想,发现很简单。只要除数目最多的糖果以外的其他所有糖果的数目之和加1(小心这里要用int64),小于数目最多的这种糖果的数目,就能吃完,否则不能。
 
 
我的代码
 1 #include <stdio.h>
2 int main()
3 {
4 int t,n,m,i,j,a,maxa;
5 __int64 s;
6 scanf("%d",&t);
7 for (i=0;i<t;i++)
8 {
9 s=0; maxa=0;
10 scanf("%d",&n);
11 for (j=0;j<n;j++)
12 {
13 scanf("%d",&a);
14 if (a>maxa) maxa=a;
15 s+=a;
16 }
17 if (s-maxa+1<maxa) printf("No\n");
18 else printf("Yes\n");
19 }
20 }


 
posted on 2011-10-28 15:13  Qiuqiqiu  阅读(2472)  评论(1编辑  收藏  举报