吃糖果

来源:互联网 发布:安图恩数据异常 编辑:程序博客网 时间:2024/04/29 02:17
题目描述:
HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。
大致思路:
模拟吃糖果的过程,多的话就减,少的话就加。
代码:
#include<cstdio>#include<cstring>using namespace std;int a[1000001];void qsort(int l,int r){    int i=l,j=r,x=a[(l+r)/2],y;    do{        while (a[i]<x) i++;        while (a[j]>x) j--;        if (i<=j)            {                y=a[i];                a[i]=a[j];                a[j]=y;                i++;                j--;            }    }while (i<=j);    if (i<r) qsort(i,r);    if (j>l) qsort(l,j);}int main(){    int n,m;    scanf("%d",&n);    for (int i=1;i<=n;i++)        {            scanf("%d",&m);            memset(a,0,sizeof(a));            for (int j=1;j<=m;j++) scanf("%d",&a[j]);            qsort(1,m);            int tem=0;            for(int j=m;j>=1;j--)                {                    if(tem<a[j]) tem=a[j]-tem-1;                    else tem-=a[j];                }            if (tem==0) printf("Yes\n");            else printf("No\n");        }}


0 0