hdu2176 尼姆博弈
2015-08-24 09:16
288 查看
如果 a1^a2^a3........^an=0,必败态。
如果 a1^a2^a3........^an!=0,必胜态。
对于必胜态,若a1^a2^a3........^an=k,要让对方为必败态,所以一定存在数,他的2进制有k的最高位上的1,使对方为必败态;
所以如果k^a[i]<a[i],一定是从该数中取,a[i]-k^a[i]个。
如果剩下一堆物品:必胜;
如果剩下二堆,都为1,必输;
如果剩下二堆,一堆为1,另一堆为n,必胜;
如果 a1^a2^a3........^an!=0,必胜态。
对于必胜态,若a1^a2^a3........^an=k,要让对方为必败态,所以一定存在数,他的2进制有k的最高位上的1,使对方为必败态;
所以如果k^a[i]<a[i],一定是从该数中取,a[i]-k^a[i]个。
如果剩下一堆物品:必胜;
如果剩下二堆,都为1,必输;
如果剩下二堆,一堆为1,另一堆为n,必胜;
#include<stdio.h> #include<string.h> #define maxn 200010 int main() { int i,j,a[maxn],n; while(scanf("%d",&n)!=EOF) { if(!n)break; int flag; flag=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); flag^=a[i]; } if(flag==0) printf("No\n"); else { printf("Yes\n"); for(i=0;i<n;i++) { if((flag^a[i]) < a[i]) { printf("%d %d\n",a[i],flag^a[i]); } } } } }
相关文章推荐
- 封装了get post方法
- 五种SQL Server分页存储过程的方法及性能比较
- Raising Modulo Numbers
- HDOJ 5417 Victor and Machine
- ZOJ 1654--Place the Robots【二分匹配 && 经典建图】
- 【POJ 3122】 Pie (二分+贪心)
- OpenStack Weekly Rank 2015.08.24
- java线程死锁实例
- CSS 制作3D魔方 爱的魔方给女(男)朋友一个感动
- listView复用问题
- UIScrollView_UIPageControl
- 如何屏蔽防止别的网站嵌入框架代码
- iOS中修改状态栏StatusBar状态和样式的几种方法
- 滚轮滑动加载更多数据
- arcgis api for javascript 距离与面积量算
- [leetcode-268]Missing Number(c)
- Selenium 工具介绍、安装、配置及使用
- bzoj2002
- Android开发从源码的角度理解Volley
- html5,html5教程