转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove


每次可以翻动一个、二个或三个硬币。(Mock Turtles游戏)

初始编号从0开始。

当N==1时,硬币为:正,先手必胜,所以sg[0]=1.

当N==2时,硬币为:反正,先手必赢,先手操作后可能为:反反或正反,方案数为2,所以sg[1]=2。

当N==3时,硬币为:反反正,先手必赢,先手操作后可能为:反反反、反正反、正反正、正正反,方案数为4,所以sg[2]=4。

位置x:0  1  2  3  4   5    6   7    8     9  10  11  12  13  14...

sg[x]:  1  2  4  7  8  11 13 14  16  19  21  22  25  26  28…

看上去sg值为2x或者2x+1。我们称一个非负整数为odious,当且仅当该数的二进制形式的1出现的次数是奇数,否则称作evil。所以1,2,4,7是odious因为它们的二进制形式是1,10,100,111.而0,3,5,6是evil,因为它们的二进制形式是0,11,101,110。而上面那个表中,貌似sg值都是odious数。所以当2x为odious时,sg值是2x,当2x是evil时,sg值是2x+1.

这样怎么证明呢?我们会发现发现,

evil^evil=odious^odious=evil

evil^odious=odious^evil=odious

假设刚才的假说是成立的,我们想证明下一个sg值为下一个odious数。注意到我们总能够在第x位置翻转硬币到达sg为0的情况;通过翻转第x位置的硬币和两个其它硬币,我们可以移动到所有较小的evil数,因为每个非零的evil数都可以由两个odious数异或得到;但是我们不能移动到下一个odious数,因为任何两个odious数的异或都是evil数。

假设在一个Mock Turtles游戏中的首正硬币位置x1,x2,…,xn是个P局面,即sg[x1]^…^sg[xn]=0.那么无可置疑的是n必定是偶数,因为奇数个odious数的异或是odious数,不可能等于0。而由上面可知sg[x]是2x或者2x+1,sg[x]又是偶数个,那么x1^x2^…^xn=0。相反,如果x1^x2^…^xn=0且n是偶数,那么sg[x1]^…^sg[xn]=0。这个如果不太理解的话,我们可以先这么看下。2x在二进制当中相当于把x全部左移一位,然后补零,比如说2的二进制是10,那么4的二进制就是100。而2x+1在二进制当中相当于把x全部左移一位,然后补1,比如说2的二进制是10,5的二进制是101。现在看下sg[x1]^…^sg[xn]=0,因为sg[x]是2x或者2x+1,所以式子中的2x+1必须是偶数个(因为2x的最后一位都是0,2x+1的最后一位都是1,要最后异或为0,2x+1必须出现偶数次)。实际上的情况可能是这样的:

MT游戏当中的P局面是拥有偶数堆石子的Nim游戏的P局面。

虽然看不太懂,但是有上面的结论就够了,找到每个位置的SG值,然后异或

被戴神的女友坑了,还要排序判重,ORZ。

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<vector>
#define C    240
#define TIME 10
#define inf 1<<25
#define LL long long
using namespace std;
int main(){int n,a[100];while(scanf("%d",&n)!=EOF){int ret=0,k;if(n==0){puts("Yes");continue;}for(int i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);int len=1;for(int i=1;i<n;i++)if(a[i]!=a[len-1])a[len++]=a[i];for(int i=0;i<len;i++){int k=a[i];int cnt=0,t=2*k;while(k){if(k&1)cnt++;k>>=1;}if(cnt%2==0)ret^=t+1;elseret^=t;}puts(ret?"No":"Yes");}return 0;
}

HDOJ 3537 Daizhenyang's Coin (翻硬币游戏)相关推荐

  1. 浅谈 翻硬币游戏【Nim博弈】

    ACM博客_kuangbin 博弈-翻硬币游戏 hihoCoder 1172 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和B ...

  2. HDU-3537 Mock Turtles型翻硬币游戏

    题意:<=10^8不定个硬币,给你n<=100个正面朝上的硬币以及他们所在的位置,可任选1/2/3个硬币反转(不必连续),但要求翻的这1/2/3个硬币中的最右侧的一个是正面朝上的,问先手者 ...

  3. 从翻硬币游戏看敏捷开发

    摘要: 敏捷开发还能这么玩? 本文分享自华为云社区<从翻硬币游戏看敏捷开发>,作者:敏捷的小智. 为了推广敏捷开发的理念,很多敏捷教练都会带领团队做一些敏捷小游戏,今天咱们就来聊聊&quo ...

  4. HDU 3537 Daizhenyang's Coin

    链接 [http://acm.hdu.edu.cn/showproblem.php?pid=3537] 题意 题意:已知一排硬币中有n个硬币正面朝上,输入正面朝上的硬币的位置ai.两人轮流操作, 每次 ...

  5. 试题 历届试题 翻硬币(贪心)

    试题 历届试题 翻硬币 资源限制 时间限制:1.0s 内存限制:256.0MB Work hard,Play harder. 问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排 ...

  6. 蓝桥杯 - 翻硬币(贪心)

    小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo        ...

  7. BZOJ 1411Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】

    1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 897  Solved: 394 [Submit][Stat ...

  8. 敏捷游戏:从硬币游戏学习Scrum敏捷方法

    在Scrum硬币游戏和the-scrum-penny-game-a-modification中都介绍了这个硬币游戏,我觉得不错,如果游戏者真正参与进来,应该能够体会到较多的敏捷思想.而最近项目组也来了 ...

  9. 牛客14355 翻硬币

    链接:https://ac.nowcoder.com/acm/problem/14355 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

最新文章

  1. usaco Prime Palindromes
  2. Oracle 11gR1中细粒度拜候搜集效劳(2)
  3. python buildin 中的一些类中为什么方法的内容都是pass?
  4. while opening read connection: jdbc:mysql message from server: Host is not allowed to connect to t
  5. 双双拿下赛道全部指标最佳 | 腾讯新一代VAV1携手V265亮相MSU编码器大赛
  6. factorybean 代理类不能按照类型注入_《Spring入门经典》:使用Spring进行依赖注入
  7. P3311-[SDOI2014]数数【AC自动机,dp】
  8. java if用法_java中if语句的写法
  9. mongodb获取数组中只符合条件的元素
  10. 巧用Ajax的beforeSend 提高用户体验
  11. TSC TTP-244 Pro标签打印机安装说明
  12. dnf脚本是php,易语言:DNF自动脚本
  13. 数据结构:图(基础概念及操作,图文解释)
  14. 学生科学计算机,学生科学计算器
  15. 真封神服务器怎么修改,手把手教你修改炫酷真封神游戏角色名
  16. Python关键字keyword
  17. 大型网络中内部网关路由协议(IGP)的选择
  18. Yolov3中xmin,ymin,xmax,ymax的疑惑
  19. 阿里云oss对象存储的使用
  20. 为自己选一个网络硬盘

热门文章

  1. 对待Petya勒索病毒的解决办法
  2. rtx3070ti显卡什么水平 rtx3070ti显卡什么级别 rtx3070ti显卡怎么样
  3. VScode退出全屏
  4. 【大数据】什么是数据集成?(SeaTunnel 集成工具介绍)
  5. 【Vue3】第十四部分 父子组件传参
  6. 用友ERP-NC用户常见的问题
  7. 拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉
  8. python pdfminer的功能_python:pdfminer接口测试
  9. Centos6 密钥登陆,解决所选的用户密钥未在远程主机上注册
  10. 微信小程序--窗口背景颜色铺满页面