[POJ2975]Nim游戏(博弈)
2016-03-06 21:39
246 查看
题目描述
传送门题解
求Nim游戏获胜的方案,其实就是求第一步可以从哪些堆里拿(不要想多了,如果真的要求总的具体的方案不现实,因为如果是必胜局面对方也可能有多种对策),也就是求有多少堆满足(a[i]^k)<a[i],a[i]为初始时每堆的石子数,k为a[1]^a[2]^a[3]^……^a。
代码
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,k,ans; int a[1005]; int main(){ while (~scanf("%d",&n)){ if (!n) break; memset(a,0,sizeof(a)); for (int i=1;i<=n;++i) scanf("%d",&a[i]); k=0; for (int i=1;i<=n;++i) k^=a[i]; ans=0; for (int i=1;i<=n;++i) if ((k^a[i])<a[i]) ans++; printf("%d\n",ans); } }
总结
位运算的优先级太低,所有的都要加括号。相关文章推荐
- 【TC-SRM461Div1】Fencing Garden【Meet In The Middle】【二分】
- struts2学习笔记----------struts2.1.6接收中文请求参数乱码问题
- bash基础特性
- c++编程思想-第2章 对象的创建与使用-2
- extjs5学习之 Model日期转换
- 【数据库】食堂大师父与那个连接池的故事
- hdu4821 string (字符串Hash)
- map set iterator使用
- UIActivityIndicatorView
- 当下大部分互联网创业公司为什么都愿意采用增量模型做开发?
- 关于软件的疑问
- 《算法竞赛入门经典》4.3.2递归函数-递归法计算阶乘
- Linux内核分析第二周--操作系统是如何工作的
- ubuntu删除输入法后,循环登陆
- 第三百三十九天 how can I 坚持
- web service中chain的使用
- 华为交换机配置远程登录及console口登录
- blade and soul factions
- 个人重构之遇错集
- WPF中的窗口的生命周期