两类特殊的Nim游戏:Nim-K游戏与反Nim游戏
Nim-K游戏
描述
有\(n\)堆石子,每次可从\(k\)堆石子中拿走任意数量的石子。
两个人轮流拿,谁不能拿谁输。
先手必胜条件
把\(n\)堆石子的石子数用二进制表示,统计每一个二进制位上\(1\)的个数。
若每一位上\(1\)的个数\(\mod (k+1)\)全为\(0\),则先手必败,否则先手必胜。
证明
类比:
一堆石子共\(n\)个,每次从最少取\(1\)个,最多取\(m\)个,取走最后一个石子的人获胜。
反Nim游戏
描述
和最普通的Nim游戏相同,不过是取走最后一个石子的人输。
先手必胜条件
以下两个条件满足其一即可(事实上你并不可能同时满足233):
所有堆的石子个数\(=1\),且异或和\(=0\)(其实这里就是有偶数堆的意思)。
至少存在一堆石子个数\(>1\),且异或和\(\neq 0\)。
证明
可以去看这篇博客。
两类特殊的Nim游戏:Nim-K游戏与反Nim游戏的更多相关文章
- BZOJ_1022_[SHOI2008]_小约翰的游戏John_(博弈论_反Nim游戏)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1022 反Nim游戏裸题.详见论文<组合游戏略述——浅谈SG游戏的若干拓展及变形>. ...
- BZOJ 1022 / P4279 Luogu [SHOI2008]小约翰的游戏 (反Nim游戏) (Anti-SG)
题意 反Nim游戏,两人轮流选一堆石子拿,拿到最后一个的输.问先手是否必胜. 分析 怎么说,分类讨论? 情形1:首先考虑最简单的情况,所有石子数都为1.那么奇数堆石子为必败,偶数为必胜 情形2:然后考 ...
- hdu2509Be the Winner(反nim博弈)
Be the Winner Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- hdu1907John(反nim博弈)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- LightOJ 1253 Misere NIM(反NIM博弈)
Alice and Bob are playing game of Misère Nim. Misère Nim is a game playing on k piles of stones, eac ...
- 两类for循环
九.两类for循环 (一)穷举 1.格式 for (初始条件;循环条件 ;循环改变) { for (初始条件;循环条件;循环改变) { for (初始条件;循环条件;循环改变) { if (判断条件) ...
- delphi 创建DBASE和FOXPRO两类DBF数据文件的差异
delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...
- Java 网络编程(二) 两类传输协议:TCP UDP
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html 两类传输协议:TCP,UDP TCP TCP是Transfer C ...
- MT【284】构造函数的导数的两类题型
第一类: 已知定义在$R$上的奇函数$f(x),f(-1)=0,$当$x>0$时,$xf^{'}(x)-f(x)<0,$则$f(x)>0$的解集为____ 第二类: 已知函数$f(x ...
随机推荐
- System.InsufficientMemoryException:无法分配536870912字节的托管内存缓冲区。可用内存量可能不足
一个病人住院太久,一次性打印护理表单超过3000条时报如标题所示的错误, 个人查阅分析应该可以从如下几方面入手: 一:查看程序客户端和服务端的配置文件相关属性是否限制了缓存最大值 (应该不是这个问题, ...
- phpstorm 不能选择 php language level
最近需要更改phpstorm中的php language level发现更改不了 解决方法是在PHP 下面的Composer中勾选了同步 composer php版本的原因 取消勾选,点击应用就可以了
- Ajax提交数据后,清空form表单
按钮不同,页面相同,还需要显示的数据不同,这里会由于页面的缓存问题,导致,每次点开这个页面显示的数据相同. 这不是我们想要的.这就需要清楚表单数据了. 如下: $('#myform')[0].rese ...
- Vim插件YouCompleteMe安装记录(号称最难装的Vim插件?)
使用 PulginInstall 安装就不要想了,如果你没有梯子的话 自己的 ssr 被封,使用的同事的 ss,但是同事设置的加密方式在 linux 上的 ss 应用不支持... 好吧,直接上过程 1 ...
- 用SQL存储过程生成唯一单据号
用SQL存储过程生成唯一单据号 在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...
- 在Windows与Ubuntu上使用tensorboard的不同点
(1)Ubuntu下使用TensorBoard如官网所述即可.https://www.tensorflow.org/programmers_guide/summaries_and_tensorboar ...
- Homebrew学习(七)之你应该定期更新 Homebrew
参考 你应该定期更新 Homebrew
- npm学习(四)之如何安装全局包、更新全局安装的包、卸载全局安装的包
如何安装全局包 有两种方式用来安装 npm 包:本地安装和全局安装.选用哪种方式来安装,取决于你如何使用这个包. 如果你想将其作为一个命令行工具,那么你应该将其安装到全局.这种安装方式后可以让你在任何 ...
- window下git代码推送
https://blog.csdn.net/luosaosao/article/details/63684470
- html 自动跳转页面
三种简单的html网页自动跳转方法,可以让你在打开一个html网页时自动跳转到其它的页面. 方法一. <html> <head> <meta http-equiv=&qu ...