Once upon a time, there were two clever people named Alice and Bob. This is how the story begins...
\(N\) 为先手必胜局面,\(P\) 为先手必败局面。
先手被认为输的局势,我们可以称之为奇异局势。
小学奥数题:甲乙轮流报数至多报 77 个数,至少报 11 个数,从 11 开始,谁先报到 5050 谁就胜利。甲先报,有无必胜策略?
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
设两堆分别剩余 \(x,y\) 的局面为 \((x,y)\)。
小范围暴力打表得到奇异局势(pair 之中小的放前面):
\[(0,0),(1,2),(3,5),(4,7),(6,10),(8,13),(9,15),(11,18),(12,20),\dots \]我们用 \((a_k,b_k)\) 表示。可以看出 \(b_k=a_k+k,a_k=\text{mex}\{a_1,b_1,\dots,a_{k-1},b_{k-1}\}\)
然后,通过「找规律」得到(在考场上不相信有人严谨证明,就是小范围打表得到的):
\[a_k=\lfloor k\phi\rfloor , b_k=\lfloor k\phi^2\rfloor , \phi=1.618\dots \]结论:异或和为 \(0\) 则 \(P\),否则 \(N\)。
证明(真的只是证明,不知道当时先人咋想出来的结论):
首先必败局面有全 \(0\),异或和为 \(0\),满足要求。
接下来我们按石子总数来强归纳:
若当前异或和为 \(0\),则任意取石子后异或和均不为 \(0\),均为后手创造必胜局面。
若当前异或和不为 \(0\),我们构造一种方案使得操作后异或和为 \(0\),为后手创造败局面:设当前异或和为 \(v\),
P2490 [SDOI2011]黑白棋 & Loj3784. 「SDOI2011」黑白棋(数据水,过了不一定对)
有 \(n\) 堆石子,每次可从 \(k\) 堆石子中拿走任意数量的石子。
两个人轮流拿,谁不能拿谁输。
结论: 将每堆数量分别用二进制表示(设二进制最高位为 \(c-1\)),每一位对应相加(\(n\) 个 \(0/1\) 相加),得到 \(s_0,s_1,s_2,\dots,s_{c-1}\),奇异局面当且仅当\(\{s\}\) 均为 \((k+1)\) 的倍数。
\(k=1\) 时即为正常 Nim。
证明不难,类似正常 Nim。
先手必胜:
异或和为 \(0\) 且每一堆都只有 \(1\) 个石子
异或和不为 \(0\) ,且至少有一堆多于 \(1\) 个石子
分道:\(sg(x)=\text{mex}\{sg(son)\}\)
分局面:\(sg(x)=\text{xor}\{sg(son)\}\)
算是 SG 例题。
在树上,我们可以进行这样一种博弈游戏:
给出一个有 \(n\) 个点的树,有一个点作为树的根节点,游戏者只有两人。
游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。
谁无路可走谁输。
简单的树手推一下各个 SG 值,然后找规律。
发现 \(sg(rt)=\text{xor}\{(sg(son)+1)\}\)。
证明对树的大小归纳,不难,略。
当然类似的树上博弈也类似做法,即 SG 扩展性好。