题干:

一年在外 父母时刻牵挂 
春节回家 你能做几天好孩子吗 
寒假里尝试做做下面的事情吧

陪妈妈逛一次菜场 
悄悄给爸爸买个小礼物 
主动地 强烈地 要求洗一次碗 
某一天早起 给爸妈用心地做回早餐

如果愿意 你还可以和爸妈说 
咱们玩个小游戏吧 ACM课上学的呢~

下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。 
现在我们不想研究到底先手为胜还是为负,我只想问大家: 
——“先手的人如果想赢,第一步有几种选择呢?”

Input

输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1<M<=100),表示扑克牌的堆数,紧接着一行包含M个整数Ni(1<=Ni<=1000000,i=1…M),分别表示M堆扑克的数量。M为0则表示输入数据的结束。

Output

如果先手的人能赢,请输出他第一步可行的方案数,否则请输出0,每个实例的输出占一行。

Sample Input

3
5 7 9
0

Sample Output

1

解题报告:

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAX = 1000000 + 5 ;
ll a[MAX],sum[MAX];
int main()
{int m;while(~scanf("%d",&m)) {if(m == 0) break;sum[0]=0;int cnt = 0;for(int i = 1; i<=m; i++) {scanf("%lld",a+i),sum[i] = a[i] ^ sum[i-1];// printf("%d %lld\n",i,sum[i]);}if(sum[m] == 0) 1;else {for(int i = 1; i<=m; i++) {ll tmp = (sum[i-1]^sum[0]) ^  (sum[m]^sum[i]);if( tmp == 0) {cnt++;}else {if(a[i] - tmp >= 0) {cnt++;}}}}printf("%d\n",cnt);}return 0;
}

【HDU - 1850】Being a Good Boy in Spring Festival (尼姆博弈,nim,异或前缀和)相关推荐

  1. hdu 1850 Being a Good Boy in Spring Festival (尼姆博弈)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  2. HDU 1850 Being a Good Boy in Spring Festival

    题解:尼姆博弈,SG(i)=i,要使当前堆可取,则数量必须大于其余所有堆的SG异或值,这样才可以减到其SG值使总异或值为0,又不可不取,所以不能取等号. #include <cstdio> ...

  3. HDOJ HDU 1850 Being a Good Boy in Spring Festival

    Description 一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄给爸爸买个小礼物 主动地 强烈地 要求洗一次碗 某一天早起 给爸妈用心地 ...

  4. hdu 5708 Alice and Bob(尼姆博弈)

    题目链接:hdu 5708 Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65536 K (Java ...

  5. hdu 1907 Jone 尼姆博弈

    题目:点击打开链接 John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) T ...

  6. HDU - 1907 John(尼姆博弈变形)

    题目链接:点击查看 题目大意:给出 n 堆石子,两个人轮流取,至少取一个,取到最后一个的人输 题目分析:尼姆博弈是取到最后一个的人获胜,这个题正好反着 一个很显然的奇异局势就是,每一堆的石子的个数都为 ...

  7. Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)

    题意: 给出三堆石子(m,n,p个),两人每次只能取斐波那契数f[i]个,最先取光所有石子者取胜 题目: 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义 ...

  8. HDU 1847 Good Luck in CET-4 Everybody! 尼姆博弈

    点击打开链接 Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  9. HDU1850 Being a Good Boy in Spring Festival

    1 /* 2 HDU1850 Being a Good Boy in Spring Festival 3 http://acm.hdu.edu.cn/showproblem.php?pid=1850 ...

最新文章

  1. Cocos2d-X中实现菜单特效
  2. Robot Framework--06 用户关键字User Keyword
  3. 深入理解C系列:不同类型变量的变量名和内存间的关系
  4. [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
  5. android新年祝福代码,讯飞输入法发布Android新春版 Biu一下敲出美好祝愿!
  6. 动手实现一个适用于.NET Core 的诊断工具
  7. 八大排序算法之选择排序算法
  8. 【kafka】Kafka Connect中的增量协同平衡
  9. JDK/Java 14 可能带来什么新特性?
  10. 【Java】application run failed Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and
  11. Portainer容器管理软件,安装
  12. python django部署_Python+django部署(一)
  13. 2005-2018 年软考软件设计师 真题分享
  14. 联想关闭计算机,联想电脑关机后自动重启怎么回事
  15. 华为手机更新EIMU10之后google play 商店消失
  16. 调研:暴力恐怖犯罪识别(图像识别)
  17. 2020 全国大学生数学建模竞赛 题目
  18. 解决Edge浏览器下载速度慢的问题:
  19. GreenPlum的Primary和Mirro切换恢复
  20. 解决windows 10桌面文件图标上出现两个蓝色箭头

热门文章

  1. 842. Split Array into Fibonacci Sequence
  2. 【Breadth-first Search 】513. Find Bottom Left Tree Value
  3. [Linux][Ubuntu]Linux实习常用操作/Debug总结
  4. 【模板】在build中配置resources来防止我们资源导出失败的问题
  5. c++ new一个结构体_「C/C++」构造类型及应用:数组、结构体、共用体、枚举类型...
  6. c语言中x的n次方怎么表示_线性代数的本质及其在人工智能中的应用
  7. 环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)
  8. 清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)
  9. 人工智能和计算机软件,人工智能在计算机软件方面有什么应用?
  10. UE4--多线程的实现方式