吃糖果
来源:互联网 发布:安图恩数据异常 编辑:程序博客网 时间:2024/04/29 02:17
题目描述:
HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。
大致思路:
模拟吃糖果的过程,多的话就减,少的话就加。
代码:
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