HDU2176(Nim博弈)
2016-04-30 10:44
393 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176
题目大意:中文题目
解题思路:非常典型的Nim博弈问题,只是用到了Nim博弈进一步的一个结论。首先求所有数目的异或,得到一个结果k,然后判断k,若k为0,则先手败,若k不为0,则先手胜,这时要输出先手的所有取子方案。求每一个数字Ni和k的异或,结果为p,若p小于Ni,则从该堆中取可以获胜,并且应该取的数目为Ni-p,而这道题目要求输出剩余的数量,则刚好是p,因此输出Ni和p即可。
AC代码:
题目大意:中文题目
解题思路:非常典型的Nim博弈问题,只是用到了Nim博弈进一步的一个结论。首先求所有数目的异或,得到一个结果k,然后判断k,若k为0,则先手败,若k不为0,则先手胜,这时要输出先手的所有取子方案。求每一个数字Ni和k的异或,结果为p,若p小于Ni,则从该堆中取可以获胜,并且应该取的数目为Ni-p,而这道题目要求输出剩余的数量,则刚好是p,因此输出Ni和p即可。
AC代码:
#include <iostream> #include <cstring> using namespace std; int n[200005]; int main() { int t; int sum=0; while(cin>>t) { if(t==0)break; sum=0; for(int i=0;i<t;i++) { cin>>n[i]; sum = sum^n[i]; } if(sum==0)cout<<"No"<<endl; else { cout<<"Yes"<<endl; for(int i=0;i<t;i++) { if((n[i]^sum)<n[i]) { cout<<n[i]<<" "<<(n[i]^sum)<<endl; } } } memset(n,0,sizeof(n)); } return 0; }
相关文章推荐
- leetcode36:valid sudoku
- Eclipse:The resource 'project name'is not accessible for lauching
- 面试中的Singleton
- myeclipse项目导入到eclipse中缺jar包
- keil编译链接过程以及ARMCC、ARMASM、FROMELF、ARMLINK、ARMAR的使用
- 用Wordpress搭建个人网站(3)
- 面试中的Singleton
- input 正则
- Git/Github的使用以及与Eclipse的整合
- Fresco之DraweeHierachy和DraweeController
- 基于zookeeper管理redis集群,LCMPS框架(二)
- 测试计划格式1
- HDU 3836 Equivalent Sets 强连通分量分解
- Windows Dev Intro - Using a Capture Device for Media Foundation
- iOS - 扫描二维码
- Git基本命令学习1
- bzoj3223 Tyvj1729 文艺平衡树
- Fresco源码简单分析 DraweeView DraweeHierarchy DraweeController
- makefile文件格式
- Struts2注解配置之@Results和@Result