ACM-尼姆博弈之取(m堆)石子游戏——hdu2176
取(m堆)石子游戏
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1486 Accepted Submission(s): 865
2
45 45
3
3 6 9
5
5 7 8 9 10
0
No
Yes
9 5
Yes
8 1
9 0
10 3
若a1^a2^...^an!=0。一定存在某个合法的移动,
将ai改变成ai'后满足a1^a2^...^ai'^...^an=0。
若a1^a2^...^an=k,则一定存在某个ai,
它的二进制 表示在k的最高位上是1(否则k的最高位那个1是怎么得到的)。
这时ai^k<ai一定成立。
则我们能够将ai改变成ai'=ai^k,此时a1^a2^...^ai'^...^an=a1^a2^...^an^k=0。
/**************************************
***************************************
* Author:Tree *
*From :http://blog.csdn.net/lttree *
* Title : 取(m堆)石子游戏 *
*Source: hdu 2176 *
* Hint : 尼姆博弈 *
***************************************
**************************************/
#include <stdio.h>
#include <algorithm>
using namespace std;
int arr[200001];
int main()
{
int n,i,t,temp;
while( scanf("%d",&n) && n )
{
temp=0;
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
temp^=arr[i];
} if( temp==0 ) printf("No\n");
else
{
printf("Yes\n");
for(i=0;i<n;++i)
{
t=temp^arr[i];
if( t<arr[i] )
printf("%d %d\n",arr[i],t);
}
}
}
return 0;
}
ACM-尼姆博弈之取(m堆)石子游戏——hdu2176的更多相关文章
- 取(m堆)石子游戏 HDU2176(Nim博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176 题目: Problem Description m堆石子,两人轮流取.只能在1堆中取.取完者胜. ...
- HDU2177取(2堆)石子游戏---(威佐夫博弈)
http://acm.hdu.edu.cn/showproblem.php?pid=2177 取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) M ...
- HDU 2176:取(m堆)石子游戏(Nim博弈)
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 杭电 2176 取(m堆)石子游戏(博弈)
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU-2176 取(m堆)石子游戏
http://acm.hdu.edu.cn/showproblem.php?pid=2176 第三种博弈,但一定要注意优化时间 取(m堆)石子游戏 Time Limit: 3000/1000 MS ( ...
- HDU 2176 取(m堆)石子游戏(Nim)
取(m堆)石子游戏 题意: Problem Description m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,1 ...
- HDUOJ-----2175取(m堆)石子游戏
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 2177 取(2堆)石子游戏
取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 2176 取(m堆)石子游戏 尼姆博弈
题目思路: 对于尼姆博弈我们知道:op=a[1]^a[2]--a[n],若op==0先手必败 一个简单的数学公式:若op=a^b 那么:op^b=a: 对于第i堆a[i],op^a[i]的值代表其余各 ...
随机推荐
- SLF4J versions 1.4.0 and later requires log4j 1.2.12 or later 终极解决
http://blog.sina.com.cn/s/blog_54eb26870100uynj.html 到SLF4J官方网站:http://www.slf4j.org/codes.html#log4 ...
- Codeforces Round #297 (Div. 2)A. Vitaliy and Pie 水题
Codeforces Round #297 (Div. 2)A. Vitaliy and Pie Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xxx ...
- OBD-II Protocol -- SAE J1850 VPW PWM
http://www.auto-diagnostics.info/j1850 j1850 The SAE J1850 bus bus is used for diagnostics and data ...
- LoadRunner的简单使用《第一篇》
LoadRunner是一个用压力测试的软件.这东西比较难上手,光安装就非常麻烦.好不容易一步步跟着安装说明安装好之后,还是用不了. 记录一个问题如下: 导入脚本的时候报错fail to create ...
- ldd pvs dis on solaris 10
#include <QtGui/QApplication> #include <QtGui/QDialog> int main(int argc, char *argv[]) ...
- shell中的括号(小括号,中括号,大括号)及单引号、 双引号,反引号(``)
一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- Property Finder – a Cross-Platform Xamarin MonoTouch Mobile App
Developers are now finding themselves having to author applications for a diverse range of mobile pl ...
- XFire Web Service
Web Service 创建HelloWorldService项目 首先要启动Web Service Project 向导.该向导由三个页面组成,第一页设置Web项目配置的详细信息:第二页设置XFir ...
- Oracle 快速插入1000万条数据的实现方式
1.使用dual配合connect by level create table BigTable as select rownum as id from dual connect by level & ...
- 如何利用javascript获取表单中select下拉列表中所选中项的值value
1.html代码如下: <html> <head> </head> <body> <form name="form1" id= ...