吃糖果(HDU-1205)
生活随笔
收集整理的這篇文章主要介紹了
吃糖果(HDU-1205)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Description
HOHO,終于從Speakless手上贏走了所有的糖果,是Gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣;可是Gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程序幫忙計算一下。
Input?
第一行有一個整數T,接下來T組數據,每組數據占2行,第一行是一個整數N(0<N<=1000000),第二行是N個數,表示N種糖果的數目Mi(0<Mi<=1000000)。
Output
對于每組數據,輸出一行,包含一個"Yes"或者"No"。
Sample Input
2
3
4 1 1
5
5 4 3 2 1
Sample Output
No
Yes
思路:找出個數最多的種類記為 n,然后模擬為有 n 個抽屜,把其他 n-1 種的糖果往這 n 個抽屜中放,由于 n 是最大的,因此同一個抽屜中不會出現同一種類的糖果,所以只要保證這 n 個抽屜里最多有一個為空即可。
Source Program
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<map> #include<stack> #include<ctime> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 10001 #define MOD 1e9+7 #define E 1e-6 #define LL long long using namespace std; int main() {int t;scanf("%d",&t);while(t--){LL n;scanf("%lld",&n);LL sum=0;LL maxx=-INF;for(LL i=1;i<=n;i++){LL a;scanf("%lld",&a);if(a>maxx)maxx=a;sum+=a;}sum-=maxx;if(sum+1>=maxx)printf("Yes\n");elseprintf("No\n");}return 0; }?
總結
以上是生活随笔為你收集整理的吃糖果(HDU-1205)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扩展二叉树(信息学奥赛一本通-T1340
- 下一篇: 图论 —— 差分约束系统