程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu1205 吃糖果(鴿籠原理)

hdu1205 吃糖果(鴿籠原理)

編輯:C++入門知識

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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved