hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣;可是gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙計算一下。
input
第一行有乙個整數t,接下來t組資料,每組資料佔2行,第一行是乙個整數n(0我們可以分成兩堆,找出這個數列中最大的數為一堆,除去這個最大的數的和為一堆,只要這個最大數小於等於其餘數列的和+1,就可以滿足條件
#include.h>
using namespace std;
const
int maxn=
1e6+10;
typedef long
long ll;
int as[maxn]
;int
main()
sort
(as+
1,as+n+
1,greater<
int>()
);ll sum=0;
for(
int i=
2;i<=n;i++)if
(as[1]
<=sum+1)
printf
("yes\n");
else
printf
("no\n");
}return0;
}
hdu 1205 吃糖果(鴿巢原理)
鴿巢原理 1.把某種糖果看做隔板,如果某種糖果有n個,那麼就有n 1塊區域,至少需要n 1塊其他種糖果才能使得所有隔板不挨在一塊.也就是說能吃完這種糖果.至少需要其他種類糖果n 1塊.鴿巢原理 2.數量最多的糖果 隔板 可以構造最多的空間,如果這種糖果有maxn個.那麼需要maxn 1個其他種糖果....
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個空間的基礎上,其餘每個糖果最多放在乙個空間,...