【题目链接】

http://acm.hdu.edu.cn/showproblem.php?pid=2176

【算法】

Nim博弈

当石子数异或和不为0时,先手必胜,否则先手必败

设石子异或和为S

如果S xor ai <= ai,那么,第一步就可以从第i堆石子中取走(S xor ai)个石子

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXM 200010 int i,m,k,sum;
int a[MAXM]; int main()
{ while (scanf("%d",&m) && m)
{
sum = ;
for (i = ; i <= m; i++)
{
scanf("%d",&a[i]);
sum ^= a[i];
}
if (sum != )
{
printf("Yes\n");
for (i = ; i >= ; i--)
{
if (sum & ( << i))
{
k = i;
break;
}
}
for (i = ; i <= m; i++)
{
if ((sum ^ a[i]) <= a[i])
printf("%d %d\n",a[i],sum^a[i]);
}
} else printf("No\n");
} return ; }

最新文章

  1. Linux创建定时任务
  2. 【编程题目】在从 1 到 n 的正数中 1 出现的次数
  3. Git 提交后开始自动构建
  4. Ye.云狐J2刷机笔记 | 完美切换内部存储卡和SD卡的改法.vold.fstab
  5. flex-linkbutton
  6. vi/vim编辑器的基本操作
  7. HDU1005 找规律 or 循环点 or 矩阵快速幂
  8. [转] 学会fetch的用法
  9. C# MVC+EF—页面搭建
  10. java提供类与cglib包实现动态代理
  11. django 项目中使用多数据库 multiple databases
  12. bzoj1050 旅行
  13. Redis安装异常解决办法
  14. Django+python实现网页数据的excel导出
  15. 一个例子说明substr(), mb_substr() 和 mb_strcut()之间的区别
  16. LeetCode 二叉树的层次遍历 C++
  17. Centos7 docker容器 搭建
  18. HDU 4655 Cut Pieces 找规律+简单计数
  19. Hive命令行经常使用操作(数据库操作,表操作)
  20. Jquery根据name取得所有选中的Checkbox值

热门文章

  1. VUE 基础语法
  2. C# How to convert MessageBodyStream to MemoryStream?
  3. javascript中caller和callee call和apply
  4. JavaWeb详细学习路线图
  5. class A&lt;T&gt; where T:new()相关知识点
  6. wp8路线跟踪应用源码详细说明
  7. 使用Caffe预测遇到的问题
  8. Ubuntu14.04引导菜单修复
  9. ubuntu 搭建Mercurial 服务(nginx)
  10. RabbitMQ学习之spring配置文件rabbit标签的使用