HDU Hide-And-Seek Game
题意
有 \(n\) 个位置,给定 \(k\),两人轮流操作。
1.选择长度小于等于 \(k\) 的非空位置删除。
2.选择连续 \(k\) 个非空位置删除,要求删除出后所在的连续段变为非空的个连续段。
无法操作者输,为谁必胜。
题解
不是很会博弈论,但还是打表切了。
用类似 1010
的形式来表示一个局面,用 \(sg(n,k)\) 全为 \(1\),给定 \(k\) 的 \(SG\) 函数值。
从一个小例子来看出改怎么做,此时 \(n=4,k=2\) 。
1111->1001
显然只能这样转移至后继局面。
注意到两边的 \(1\) 其实相当于 \(n=1\) 的全 \(1\) 情况,两边来操作其实就是一个组合游戏。
所以就进入了一个子问题,可以扩展到多个的情况,可得:
\[sg(n,k) = mex_{i=1}^{n-k-1} sg(i,k) \oplus sg(n-k-i,k)
\]
边界情况为:
\[\begin{cases}
n \leq k,sg(n,k)=1\\
n = k+1,sg(n,k)=0\\
\end{cases}
\]
然后打个表就能发现规律,结论为:
若 \(n \leq k\),则先手必胜。
否则 $n-k \equiv 1 \pmod{2+4k} $,成立则后手必胜,反之先手必胜。
特判 \(0\) 。
正解有点 \(hard\),待补。