HDU 1205 吃糖果

来源:互联网 发布:2016知乎日报启动照片 编辑:程序博客网 时间:2024/06/05 05:47

Problem Description

HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。

Input第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。Output对于每组数据,输出一行,包含一个"Yes"或者"No"。Sample Input234 1 155 4 3 2 1Sample OutputNoYesHintHintPlease use function scanfAuthorGardonSource Gardon-DYGG Contest 2  RecommendJGShining   |   We have carefully selected several similar problems for you:  1201 1021 1108 1008 1005  抽屉原理的应用。 如果要保证一种一样一个的吃糖果顺序,首先要保证最后不会剩下两个相同的糖果。如此,只需要保证最大的糖果堆<=sum(其余的所有糖果)+1即可。
#include<iostream>#include<iomanip>#include<algorithm>using namespace std;#define ll long long int ll a[1000100];ll T; ll n;ll cmp(ll a, ll b){    return a > b;}int main(){    cin >> T;    while (T--)    {        cin >> n;        for (ll i = 0; i < n; i++)        {            cin >> a[i];        }        sort(a, a + n,cmp);        ll sum = 0;        for (ll i = 1; i < n; i++)        {            sum += a[i];        }        if (a[0] > sum + 1)            cout << "No" << endl;        else            cout << "Yes" << endl;    }    return 0;}
原创粉丝点击