两类特殊的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 ...
随机推荐
- spring boot-2.Hello world
由于 个人习惯,我选择使用STS来作为开发工具.跳过手动构建spring boot 项目的环节,直接使用向导创建spring boot 项目. 1.创建spring boot项目 File ----& ...
- algorithm下的常用函数
algorithm下的常用函数 max(),min(),abs() max(x,y)返回x和y中最小的数字 min(x,y)返回x和y中最大的数字 abs(x)返回x的绝对值,注意x应当是整数,如果是 ...
- LOJ 103 字串查找 题解
题面 这道题是KMP的模板. KMP需要注意的细节有很多,所以把这篇文章发上来供参考: #include <bits/stdc++.h> using namespace std; char ...
- P1115 最大子段和(简单DP)
题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入格式 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi,描述了这段序 ...
- spring boot 是如何利用jackson进行反序列化的?
以下面的代码为例: @RestController public class HelloController { @RequestMapping("/") public BillS ...
- C# System.Reflection (反射)
在使用.NET创建的程序或组件时,元数据(metadata)和代码(code)都存储于“自成一体”的单元中,这个单元称为装配件.我们可以在程序运行期间访问这些信息. 在System.Reflectio ...
- PHP之面试题总结
总结一些面试题,有备无患,走起... 1.熟悉的 nosql 和 sql 有什么区别(优势,劣势) Memcache,Redis 都是内存数据库 redis是一个开源的支持多种数据类型的key=> ...
- IDEA debug模式鼠标悬停提示变量值
- mysql5.7.26做主主配置
一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.在 ...
- 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结
前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...