$umm$可能之后会写个博弈论总结然后就直接把这个复制粘贴上去就把这个删了

但因为还没学完所以先随便写个$NIM$游戏总结趴$QAQ$

首先最基础的$NIM$游戏:有$n$堆石子,每次可以从一堆中取若干个,求最后谁胜利

这种有个结论,是说当开局所有数异或起来不为0时先手必胜

证明在这里写了下,懒得再写遍了挺显然的$QwQ$

(大概$get$了一下$SG$函数之后来瞎$upd$下,,,

就,这儿其实是可以用$SG$函数解释的

简单来说,不难得到$SG(x)=x$,挺显然的?就,因为可以取任意多个,于是有$SG(x)=mex(SG(x-1),SG(x-2),...,SG(0))$,数学归纳法即可$QwQ$

又有$SG(G)=SG(x_{1})$^$SG(x_{2})$^$...$,于是就有当$x_{1}$^$x_{2}$^...^$x_{n}\neq 0$时先手必胜,否则必败

然后说下变式昂

变式1:每次取的石子数量有上界$m$

$umm$就是一个$bash\ game$+$NIM\ game$(关于$bash\ game$的话放个最$easy$的入门题趴$QwQ$

直接把所有值对$m+1$取膜就好,证明十分显然?就一定能在先手/后手的操纵下就像$bash-game$中一样使得每堆石子的数量都<=$m$,这时候就相当于没有这个$m$的限制了就当普通$NIM$游戏做就好了$QwQ$

变式2:每次可以从$k$堆中取若干个

基础$NIM$游戏可以当做是这个变式的一个$easy$版情况?就相当于是$NIM_{1}$嘛

那就考虑能不能用一点儿,类比的思想,从类似的角度考虑这个问题的通解$QwQ$?

于是不难得出结论所有数在$k$进制下做不进位加法不为0时先手必胜

再来瞎证下趴$QAQ$

按之前证$NIM$游戏结论时候的流程,依然是考虑当在$k$进制下做不进位加法不为0时的情况,考虑如果能取一些石子使得变为在$k$进制下做不进位加法为0

这时又是两种情况

第一种是没有石子剩余了,欧克赢了,不说

第二种是还有石子剩余,因为最多只能从$k$堆中拿,所以不可能出现后手拿了之后依然是$k$进制下做不进位加法答案是0的情况,即一定又能回到最开始

那就相当于现在只要能证,在不进位加法不为0的情况下能取出一些石子使它变为等于0的状态就好

考虑对所有数字都$k$进制分解,开个数组$a_{i,j}$,表示第$j$个数在$k^{i}$下的取值,再开个$sum_{i}$表示$\sum a_i\ mod\ k$,显然对每一位$i$,取出$sum_{i}$就好

显然是可以达成的

证毕!(好像表述不太清,,,算了不管了$TT$

变式3:阶梯博弈

先说下这类题是啥$QwQ$

大概就是有个高度递增的楼梯,每一级上都有若干个球,每次操作可以选择一级楼梯,选择上面的若干个球移动到边上更低的那一极去,当移动到地面(第0级楼梯)的时候就不能操作了

这题也是有个结论,是说可以忽略偶数级台阶,剩余的奇数级构成的$NIM$游戏的结果就是这个题的结果

知道结论了的话证明还是不难的$QwQ$,下面瞎证下趴$QAQ$

首先当所有球都到0级楼梯时就不能移动了,是在偶数级楼梯上的

然后当对方移动了偶数级楼梯的时候,比如将$d$个球从第$2n$级到了第$2n-1$级,就把第$2n-1$级上的$d$个球移到第$2n-2$级去

这样就可以保证,从奇数移至偶数,相当于是拿走,从偶数移至奇数,相当于没有意义

如果能$get$这点的话也就不难想到只考虑奇数层的时候就是个普通的$NIM$游戏了呢$QwQ$

例题:

[X]$poj1704$

随机推荐

  1. oracle函数greatest(exp1,exp2,exp3,……,expn)

    [功能]返回表达式列表中值最大的一个.如果表达式类型不同,会隐含转换为第一个表达式类型. [参数]exp1……n,各类型表达式 [返回]exp1类型 [示例] SELECT greatest(10,3 ...

  2. Nova中的Hook机制

    Nova的代码中支持Hook机制,也就是在某些函数的前后,可以加入自己的代码逻辑.Hook代码可以完全独立于Nova开发,本质上使用setuptools的entry points机制.K版本的Open ...

  3. @codechef - MGCH3D@ 3D Queries

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 在三维空间内有 N 个不同的点,请计算下面式子的值 Q 次: \ ...

  4. Tyvj 1864 [Poetize I]守卫者的挑战

    P1864 [Poetize I]守卫者的挑战时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻 ...

  5. Ext.FormPanel-----FieldSet的用法

    Ext.form.FieldSet的常用配置项: 1.checkboxToggle : Mixed True表示在lengend标签之前fieldset的范围内渲染一个checkbox,或者送入一个D ...

  6. hdu 2986 Ballot evaluation (Simulation)

    Problem - 2986 之前在华工赛见过的一道简单的模拟,用map轻松干掉.为了精确,要全程用整型比较.轻松1y~ 代码如下: #include <cstdio> #include ...

  7. PHP redis安装扩展

    命令: 查看php版本:PHP -v 查看php安装的扩展:PHP -m php扩展开发包(包括phpize,php -config):yum install php-devel which phpi ...

  8. poj 2996

    提示:很烦很简单的国际象棋棋盘模拟,输入比较麻烦而已 输出时: 1.不论黑白,KQRBN P均是依次输出,强制大写,但不输出“P”,只输出其坐标 2.对白棋的位置,小行优先大行输出(行的数字越小则优先 ...

  9. dotnet 设计规范 · 结构体定义

    X 不要给结构体默认构造函数 默认的C#编译器也不让开发者定义有默认构造的结构体 X 不要定义易变的属性 易变的属性指的是在调用属性返回值的时候返回的是新的实例,易变的属性会有很多的问题. ✓ 需要确 ...

  10. Django入门2--Django的应用和开发第一个Template

    Django创建应用的命令: 应用的目录: 开发第一个Template: