博弈专题
https://cplusoj.com/d/senior/contest/69faf5321363e1a076b48956
AT_agc002_e [AGC002E] Candy Piles
我们可以将石子堆从大到小排序,每次可以删除一行/一列。
等价于从左下角开始往右上走,走到边界上就死了。
发现对角线上的格子胜负状态都是相同的,那么求一下原点状态即可。
Paper-strip Game
打表 SG 函数,发现若干数后有循环节。
SP11414 COT3 - Combat on a tree
考虑设 \(f_u\) 表示 \(u\) 子树内的 SG 函数值,且 \(fa_u\) 到根的链已经被涂黑。
对于 \(u\) 子树内,操作一条链 \(v\) 的后继状态为删除 \(u\) 到 \(v\) 这段链上节点后剩下的子树 SG 值的 xor。
考虑维护 trie 树合并,打标记,这样就可以维护 \(u\) 字数内所有后继状态 SG 值的 trie 树,然后求二分 mex。
对于黑点的 SG 定义为其儿子的 xor 值。
复杂度 \(O(n\log n)\)。
poj2311 Cutting Game
也就是每次切割不能出现 \(1\times n\) 的块,所以至少是 \(2\times n\)。那么就可以求 SG 函数了。
P1290 欧几里德的游戏
令 \(a<b\)。
如果 \(2a>b\),则我们只能进行 \((a,b-a)\)。
如果 \(a=b\),我们就赢了。
如果 \(2a\le b\),考虑进行 \((a,b\bmod a)\) 后是否获胜。如果是必败,那么走 \((a,(b\bmod a)+a)\)。
P2148 [SDOI2009] E&D
打表 SG 函数,发现:
\(f(x,y)=\begin{cases}0 & x\bmod 2=y\bmod 2=1\\ f(\left\lceil\frac{x}{2}\right\rceil,\left\lceil\frac{y}{2}\right\rceil)+1 & \mathrm{otherwise}\end{cases}\)
浙公网安备 33010602011771号