其实有至关大一部分的博弈论都是能够抽象成Nim及其扩展问题的,剩下的小部分结合题目具体分析。函数
本文主要讨论Nim有关的题目3d
nim的原型题结论:若$a_1 \ xor \ a_2 \ xor... a_n=0$则先手必败,不然必胜blog
证实:游戏
终止局面显然知足等式原型
若是一个局面$a_1 \ xor a_2 \ xor... a_n!=0$,那么不管他改变其中一个$a_i$等于剩下数字的异或和就能知足等式it
若是一个局面$a_1 \ xor a_2 \ xor... a_n=0$,那么不管他改变$a_i$中的哪个都会打破等式扩展
有些博弈论题,结合题目中的信息推导一些结论后,能够将原问题抽象为Nim问题二进制
好比【BZOJ2281】【Sdoi2011】黑白棋 将棋子间的间隔抽象为石头堆方法
有些题目须要借助SG函数来抽象im
即,将每个状态用SG函数值表示出来。
若SG(x)=y,含义就是x能够转移到0~y-1的全部状态(像不像Nim游戏?),若SG(x)=0就说明没法转移,也就是输了。
这样能够将SG函数值自己看做石头堆
而后原问题就转化为了初始状态的SG异或和是否为0
递推解决便可
能够同时取最多k堆石头
结论:若知足:将$a_i$写成二进制,若对于每个二进制位,全部的$a_i$那一位的1的数量%k=0,则先手必败,不然必胜
证实类比传统Nim游戏
每次选择一堆石头,将其分裂为几堆更小的。
结论:每堆石头的SG函数的后继集合等于每种分法产生的堆的异或和
即$SG(x)=mex(SG(a_1 xor ..a_{k_1}),SG(b_1 xor .. b_{k_2},...)$
而后递推SG函数求解便可
例题:【bzoj3576】[Hnoi2014]江南乐
最后一个取石头的人输
一个状态为必胜态,当且仅当:(NIM_sum为全部石头数的异或和)
1)全部堆的石子个数为1,且NIM_sum=0
2)至少有一堆的石子个数大于1,且 NIM_sum≠0
每次将所取第i堆的石头转移到第i-1堆,到0中止
若全部奇数位的数异或起来,若不为0则必胜
证实:移入偶数堆的石头能够看作是被清除了
若是有人拿出来就再将其丢去下一个偶数堆,对局面不影响
之因此是偶数是由于0是偶数,移入0的石头没法再移出,再也不有影响。
而后就是普通的Nim游戏了