题目的意思就不说了,典型的取石子的博弈问题。

题目的前半部分就是赤果果的SG函数值异或就可以了,其中Sg函数值就是石子数本身。

但是接下来有个小变换,就是要你输出先手必胜有多少种不同的取法。

首先要想保持必胜,必须要取完以后保证所有的石子数异或值为0.

这样,假设我们来判断某一堆是否可取的时候,我们可以用总的异或值来与当前堆石子数异或一下,就得出当前堆应该剩下多少石子哦(仔细理解这里就好了)

下面可以贴代码了:

 #include <iostream>
#include <cstdio>
using namespace std; int a[],n,m,ans; int main()
{
while (scanf("%d",&n) && n)
{
ans=m=;
for (int i=; i<=n; i++) scanf("%d",&a[i]),m^=a[i];
if (m==)
{
printf("0\n");
continue;
}
for (int i=; i<=n; i++)
if ((a[i]^m)<a[i]) ans++;//一开始的时候我的判断条件是<=,居然也对了,诶数据略水,这里必须是严格的小于。
printf("%d\n",ans);
}
return ;
}

ZOJ3067_Nim的更多相关文章

随机推荐

  1. 20155305 2016-2017-2 《Java程序设计》 实验五 Java网络编程及安全实验报告

    20155305 2016-2017-2 <Java程序设计> 实验五 Java网络编程及安全实验报告 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传 ...

  2. 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为. 面向对象中,子类继承父类,就是把程序中相同的代 ...

  3. 百度地图api 常用 例子

    功能一:获取map地图窗口的可视区域: var map = new BMap.Map("allmap");            // 创建Map实例 map.centerAndZ ...

  4. [BZOJ1185][HNOI2007]最小矩形覆盖-[凸包+旋转卡壳]

    Description 传送门 Solution 感性理解一下,最小矩形一定是由一条边和凸包上的边重合的. 然后它就是模板题了..然而真的好难调,小于大于动不动就打错. Code #include&l ...

  5. 国外10个ASP.Net C#下的开源CMS

    国外10个ASP.Net C#下的开源CMS https://blog.csdn.net/peng_hai_lin/article/details/8612895   1.Ludico Ludico是 ...

  6. 【索引】MySQL索引

    一.索引的定义及作用 1. 二.索引的创建及删除 1.1查看表的索引 show index from tblname; 1.2.创建索引 1.22创建普通索引 ALTER TABLE `table_n ...

  7. Maven学习(三)-----Maven本地资源库

    Maven本地资源库 Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹.很简单,当你建立一个Maven项目,所有相关文件将被存储在你的M ...

  8. Spring 定时任务Scheduled 开发详细图文

    Spring 定时任务Scheduled 开发 文章目录 一.前言 1.1 定时任务 1.2 开发环境 1.3 技术实现 二.创建包含WEB.xml 的Maven 项目 2.1 创建多模块项目task ...

  9. 在香港网站使用工商银行的MasterCard,工商银行所犯的低级的错误,金融安全何在

  10. 4.openldap创建索引

    1.索引的意义 提高对Openldap目录树的查询速度 提高性能 减轻对服务器的压力 2.搜索索引 ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn= ...