杭電吃糖果問題

 

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
解題思路:先把全部的糖果數從大到小排序,只要最大的糖果數-1小於等於其它的糖果數之和便可

#include<algorithm>
#include<iostream>
using namespace std;
int a[1000000];
int main()
{
int T,N,i,j;
__int64 sum;//注意sun可能會很大,因此要用__int64 
scanf("%d",&T);
while(T--)
{
sum=0;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+N);
for(i=0;i<(N-1);i++)
{
sum=sum+a[i];
}
if(sum>=(a[N-1]-1))
{
printf("Yes\n");
}
else
printf("No\n");
}
} ios

相關文章
相關標籤/搜索