題意:n種糖果,不能把一樣的放在一起吃,即第一次吃一種,下一次吃另一種。
思路:找到個數最多的糖果種類(最大的數目記作 ma,該糖果種類記為a),首先把這n個糖果放到n個抽屜裡面,然後把剩餘的n-1種糖果往抽屜裡面放。因為n是最大的數目,即剩餘的n-1種糖果的放置過程中,每一種糖果都可以分別放到不同的抽屜裡,也就是說,不會出現乙個抽屜裡有相同的糖果。 只要保證最多有乙個抽屜只有乙個a糖果即可。也就是說除了a糖果外,剩下的糖果總數要 >=ma-1。(吃的時候就好說了,乙個抽屜乙個抽屜的吃就可以了,吃的時候保證當前抽屜吃的最後乙個不要與下乙個抽屜的第乙個相同即可。)
於是也就得到滿足條件的公式:sum-ma>=ma-1
其中sum為總和,ma為數目最多那種糖果數目,
**:
1 #include2 #include3view codeusing
namespace
std;45
intmain()
18if(sum-ma>=ma-1)printf("
yes\n");
19else printf("
no\n");
20}21return0;
22 }
吃糖果 HDU 1205 抽屜原理
hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣 可是gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙計算一下。第一行有乙個整數t,接下來t組資料,每...
hdu 1205 吃糖果 輸入掛 抽屜原理
有最多數量的某種糖果數量為maxn,接下來問題轉化成能否將在maxn個相同的糖果序列中間差入一些其他糖果,將相同的糖果分開。根據抽屜原理,最少需要maxn 1個糖果。include include include include include include include include inc...
HDU 1205吃糖果 抽屜原理還能這麼用
先放題目 hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣 可是gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙計算一下。input 第一行有乙個整數...