$SG$ 函数 + 整除分块.
假定可以选择黑点进行操作,可以发现,若选择黑点,不能直接胜利,而对方下一步可以选同样的位置翻转回来.
所以最优策略下仍不会选择黑点进行操作.
把每个白点看成一个子游戏,最后将它们的 $SG$ 函数值全部异或起来就是整个游戏的 $SG$ 异或值.
根据 $SG$ 函数的定义,转移有,
$$
SG(i)=\mbox{mex}_{j=2}^{\lfloor \frac n i \rfloor}\ SG(i\cdot j)
$$
简单归纳一下不难得出,若 $\lfloor \frac n x\rfloor=\lfloor \frac n y\rfloor$ ,则 $SG(x)=SG(y)$ .
于是只有 $O(\sqrt n)$ 个有用的值,整除分块进行计算.
时间复杂度 $O(n)$ ,但实际上是跑不满的,可以通过.
1 |
|