HDU Alice Game

HDU Alice Game

题意

\(n\) 个位置,给定 \(k\),两人轮流操作。

1.选择长度小于等于 \(k\) 的连续非空位置删除。
2.选择连续 \(k\) 个非空位置删除,要求删除出后所在的连续段变为非空的2个连续段。

无法操作者输,为谁必胜。

题解

不是很会博弈论,但还是打表切了。
用类似 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\),待补。

posted @ 2023-07-20 23:55  谭皓猿  阅读(30)  评论(0)    收藏  举报