hdu1205 吃糖果(鴿籠原理)
題目鏈接:
huangjing
思路:
這個題我是這樣想的,把其他顏色的糖果當成擋板,必過有n個,那麼就可以形成n+1個位置,那麼如果n+1大於最大堆糖果樹,那麼就可以吃到所有不同的糖果,但是有可能會說,萬一其他顏色的糖果沖突呢????但是因為其他每種顏色的糖果的數目必然小於最大的,那麼可以把這些插入到最大堆的糖果和其他顏色中,相當於加大板子的厚度。。。。
題目:
吃糖果
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 23336 Accepted Submission(s): 6711
Problem Description
HOHO,終於從Speakless手上贏走了所有的糖果,是Gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣;可是Gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程序幫忙計算一下。
Input
第一行有一個整數T,接下來T組數據,每組數據占2行,第一行是一個整數N(0
Output
對於每組數據,輸出一行,包含一個"Yes"或者"No"。
Sample Input
2
3
4 1 1
5
5 4 3 2 1
Sample Output
No
Yes
HintHint
Please use function scanf
Author
Gardon
Source
Gardon-DYGG Contest 2
Recommend
JGShining | We have carefully selected several similar problems for you: 1201 1021 1005 1234 1071
代碼:
#include
int main()
{
__int64 sum;
int max_num,candy,t,n,i;
scanf("%d",&t);
while(t--)
{
max_num=-1;
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&candy);
sum+=candy;
if(candy>max_num)
max_num=candy;
}
if(sum-max_num+1>=max_num)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}