HDOJ 1205 吃糖果,hdoj1205吃糖果
吃糖果Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 23456 Accepted Submission(s): 6747
Problem DescriptionHOHO,終於從Speakless手上贏走了所有的糖果,是Gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣;可是Gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙計算一下。
Input第一行有一個整數T,接下來T組資料,每組資料佔2行,第一行是一個整數N(0<N<=1000000),第二行是N個數,表示N種糖果的數目Mi(0<Mi<=1000000)。
Output對於每組資料,輸出一行,包含一個"Yes"或者"No"。
Sample Input
234 1 155 4 3 2 1
Sample Output
NoYesHintHint Please use function scanf
水題,採用基本的抽屜遠離即可。(PS.一開始居然還不會做,刷題太少哈)
抽屜原理,即用數量最多排成一列,然後用剩餘的當做隔板來觀察是否可以實現。
蔽日第一例,4 1 1 假設分別為 A B C則為A B A C A A 應為出現了AA故不滿足,輸出No.
代碼:
#include <cstdio>int main(){int T, n, temp,max;long long sum;scanf("%d", &T);while (T--){temp = sum = max=0;scanf("%d", &n);while (n--){scanf("%d", &temp);if (max < temp)max = temp;sum += temp;}if (sum - max >= max - 1)printf("Yes\n");elseprintf("No\n");}return 0;}
Sample Output
NoYesHintHint Please use function scanf
HDOJ 1205吃糖果 java
不理解你多次輸入的意思,沒有在代碼中標註注釋,能否把題目更加完善的描述寫
ACM題,解答下
一共三個問題
sum=0應該寫在迴圈裡面
no的判斷條件是a>sum+1
sum的資料類型應該是long long
就說這麼多,自己體會一下
附修改後代碼
Problem : 1205 ( 吃糖果 ) Judge Status : Accepted
RunId : 3050346 Language : G++ Author : ccarter
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
#include<stdio.h>
int main()
{
int t,a,b,c,n;
long long sum;
scanf("%d",&t);
for(int i=0;i<t;i++)
{scanf("%d",&n);
sum=0;
scanf("%d",&a);
for(int j=0;j<n-1;j++)
{scanf("%d",&b);
if(a<b)
{c=a;
a=b;
b=c;}
sum+=b;}
if(a>sum+1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int t,a,b,c,n;
long long sum;
scanf("%d",&t);
for(int i=0;i<t;i++)
{scanf("%d",&n);
sum=0;
scanf("%d",&a);
for(int j=0;j<n-1;j++)
{scanf("%d",&b);
if(a<b)
{c=a;
a=b;
b=c;}
sum+=b;}
if(a>sum+1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}