鴿巢原理
1.把某種糖果看做隔板,如果某種糖果有n個,那麼就有n+1塊區域,至少需要n-1塊其他種糖果才能使得所有隔板不挨在一塊..也就是說能吃完這種糖果.至少需要其他種類糖果n-1塊..(鴿巢原理)
2.數量最多的糖果(隔板)可以構造最多的空間,如果這種糖果有maxn個....那麼需要maxn-1個其他種糖果.對於某種數量少於maxn的糖果來說,可以在原本數量最多的糖果構造的隔板上"加厚"原有的隔板...,那麼這"某種糖果"就銷聲匿跡了.....
考慮極端情況.如果某種糖果無法在這maxn+1的空間內構造出符合條件的序列,那麼這種糖果至少要有maxn+1+1個(考慮只有兩種糖果的情況)...(鴿巢原理)...但是這與數量最多的那種糖果只有maxn個矛盾.....(maxn+1+1>maxn 這不等式不難理解吧....).
#include #include #include using namespace std;
typedef long long ll;
int main()
if(2*maxn - 1 <= sum)
printf("yes\n");
else
printf("no\n");
}return 0;
}
hdu1205吃糖果 鴿巢原理
鴿巢原理 25只鴿子飛進了24個鴿巢,則至少有乙個鴿巢有兩個鴿子。這道題就是找出數量最大的那堆糖果,然後判斷sum max 代表總量 最大堆數量,也就是剩餘糖果的數量 是否大於 max 1,如果大於的話,代表可以吃完.因為數量為max的糖果有max 1 個空,其他種類小於max 1的糖果,可以插在m...
HDU 1205 吃糖果(鴿巢原理)
思路 1.記最多的糖果為ans,剩下糖果總數為sum 2.如果想將ans個糖果隔開,我們至少需要ans 1個其它糖果,因此sum如果小於ans 1則不行 3.如果sum大於等於ans 1,將ans個糖果隔開的區間認為是乙個空間,我們可以在放滿這ans 1個空間的基礎上,其餘每個糖果最多放在乙個空間,...
HDU 1205 吃糖果 鴿巢原理 8月1
吃糖果 problem description hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣 可是gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙...