【HDU - 1850】Being a Good Boy in Spring Festival (尼姆博弈,nim,异或前缀和)
题干:
一年在外 父母时刻牵挂
春节回家 你能做几天好孩子吗
寒假里尝试做做下面的事情吧
陪妈妈逛一次菜场
悄悄给爸爸买个小礼物
主动地 强烈地 要求洗一次碗
某一天早起 给爸妈用心地做回早餐
如果愿意 你还可以和爸妈说
咱们玩个小游戏吧 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,异或前缀和)相关推荐
- 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 ...
- HDU 1850 Being a Good Boy in Spring Festival
题解:尼姆博弈,SG(i)=i,要使当前堆可取,则数量必须大于其余所有堆的SG异或值,这样才可以减到其SG值使总异或值为0,又不可不取,所以不能取等号. #include <cstdio> ...
- HDOJ HDU 1850 Being a Good Boy in Spring Festival
Description 一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄给爸爸买个小礼物 主动地 强烈地 要求洗一次碗 某一天早起 给爸妈用心地 ...
- hdu 5708 Alice and Bob(尼姆博弈)
题目链接:hdu 5708 Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65536 K (Java ...
- hdu 1907 Jone 尼姆博弈
题目:点击打开链接 John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) T ...
- HDU - 1907 John(尼姆博弈变形)
题目链接:点击查看 题目大意:给出 n 堆石子,两个人轮流取,至少取一个,取到最后一个的人输 题目分析:尼姆博弈是取到最后一个的人获胜,这个题正好反着 一个很显然的奇异局势就是,每一堆的石子的个数都为 ...
- Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)
题意: 给出三堆石子(m,n,p个),两人每次只能取斐波那契数f[i]个,最先取光所有石子者取胜 题目: 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义 ...
- 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 ...
- 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 ...
最新文章
- Cocos2d-X中实现菜单特效
- Robot Framework--06 用户关键字User Keyword
- 深入理解C系列:不同类型变量的变量名和内存间的关系
- [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
- android新年祝福代码,讯飞输入法发布Android新春版 Biu一下敲出美好祝愿!
- 动手实现一个适用于.NET Core 的诊断工具
- 八大排序算法之选择排序算法
- 【kafka】Kafka Connect中的增量协同平衡
- JDK/Java 14 可能带来什么新特性?
- 【Java】application run failed Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and
- Portainer容器管理软件,安装
- python django部署_Python+django部署(一)
- 2005-2018 年软考软件设计师 真题分享
- 联想关闭计算机,联想电脑关机后自动重启怎么回事
- 华为手机更新EIMU10之后google play 商店消失
- 调研:暴力恐怖犯罪识别(图像识别)
- 2020 全国大学生数学建模竞赛 题目
- 解决Edge浏览器下载速度慢的问题:
- GreenPlum的Primary和Mirro切换恢复
- 解决windows 10桌面文件图标上出现两个蓝色箭头
热门文章
- 842. Split Array into Fibonacci Sequence
- 【Breadth-first Search 】513. Find Bottom Left Tree Value
- [Linux][Ubuntu]Linux实习常用操作/Debug总结
- 【模板】在build中配置resources来防止我们资源导出失败的问题
- c++ new一个结构体_「C/C++」构造类型及应用:数组、结构体、共用体、枚举类型...
- c语言中x的n次方怎么表示_线性代数的本质及其在人工智能中的应用
- 环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)
- 清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)
- 人工智能和计算机软件,人工智能在计算机软件方面有什么应用?
- UE4--多线程的实现方式