从最简单的Nim模型开始html
它的定义是这样的spa
有\(n\)堆石子,两我的能够从任意一堆石子中拿任意多个石子(不能不拿)或把一堆数量很多于\(2\)石子分为两堆不为空的石子,无法拿的人失败。问谁会胜利code
这个问题的本质仍是Nim游戏,能够利用SG定理来解释htm
经过观察不难不发现,操做一与普通的Nim游戏等价blog
操做二其实是将一个游戏分解为两个游戏,根据SG定理,咱们能够经过异或运算把两个游戏链接到一块儿,做为一个后继状态游戏
煮个栗子get
SG(3)的后继状态有\(\{ (0),(1),(2),(1,2) \}\)他们的SG值分别为\(\{ 0,1,2,3 \}\),所以\(SG(3)=mex\{ 0,1,2,3 \}=4\)class
另外这种游戏还有一个很是神奇的性质方法
\[SG\left( x\right) =\begin{cases}x-1\left( x\mod4=0\right) \\ x\left( x\mod4=1 \lor 2\right) \\ x+1\left( x\mod4=3\right) \end{cases}\]im
而后把这个结论背过就好啦233
根据上面的游戏,咱们定义Multi-SG游戏
后继
能够为多个单一游戏
。注意在这里要分清楚后继
与多个单一游戏
对于一个状态来讲,不一样的划分方法会产生多个不一样的后继,而在一个后继中可能含有多个独立的游戏
一个后继状态的SG值即为后继状态中独立游戏的异或和
该状态的SG值即为后继状态的SG值中未出现过的最小值
难度跨度好大啊QWQ。。
直接放题解吧