/**
*@author StormMaybin
*/
写在前面
生活中没有退步。只要我们肯学,无论什么经验都是我们需要领悟的章节。
题目描述
Problem Description
HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。
Input
第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(N<=1000000),第二行是N个数,表示N种糖果的数目Mi(Mi<=1000000)。
Output
对于每组数据,输出一行,包含一个”Yes”或者”No”。
Sample Input:
2
3
4 1 1
5
5 4 3 2 1
Sample Output:
No
Yes
首先这道题考察的是排列和组合!
如果最多的糖果大于剩下糖果的和加1(为什么+1可以自己思考)的话,那么就不符合题目的意思
所以,我们只要判断最多的糖果数和剩下糖果的和的关系即可
代码如下:
#include <stdio.h>
#define M 1000000
#define max(a,b) a>b?a:b
int i,n,T,MAX;
int a[M];
int main()
{
scanf("%d",&T);
while(T--)
{
long long sum=0;
scanf("%d",&n);
MAX=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
MAX=max(MAX,a[i]);
}
sum=sum-MAX+1;
if(sum>=MAX)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
这篇博客解析了杭电在线评测系统(OJ)中的第1025题,题目涉及到如何安排吃糖果的顺序,以确保能吃完所有不同种类的糖果。博主指出,关键在于判断最多的糖果数是否大于剩下糖果数量的和加1。如果满足条件,则输出"No",否则输出"Yes"。通过这个简单的逻辑,可以解决这个问题。

358

被折叠的 条评论
为什么被折叠?



