hdu 1205 吃糖果

水题(不知道归在哪一类)

无意间看到的一题…………觉得比较水有比较无聊就AC了,本来想写二分的后来发现没必要,就一个线性扫描过去即可

从大到小排序,每次在两堆糖果里面轮流取,其中一堆取完后就取接下来的那一堆,取到最后结束。看最后剩下多少个糖果,<2成功,否则失败

从小到大排序是不行的

 

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 1000010
using namespace std;
int a[N],n;

int cmp(int p ,int q)
{return p>q?1:0; }
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(int i=0; i<n; i++)
            scanf("%d",&a[i]);
        sort(a,a+n,cmp);

        int s=a[0];
        for(int i=1; i<n; i++)
            s=abs(s-a[i]);
        if(s<2)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

 

posted @ 2012-12-25 19:00  Titanium  阅读(163)  评论(0编辑  收藏  举报