题解:CF1906G Grid Game 2

把每个初始黑格 \((r,c)\) 视作独立子局 \(G_{r,c}\)。因一次操作只影响以 \((r,c)\) 为右下角的左上实心矩形,任何两子局要么互不相交,要么一包含一,从而整体就是若干子局的离散和;胜负取决于所有子局的 SG 值按异或求和是否为零。可证明 \(G_{r,c}\) 的 SG 值只可能取 \(0\)\(1\),且有公式:

\[g(r,c)=E(r,c)\oplus E(r-1,c)\oplus E(r,c-1)\oplus E(r-1,c-1) \]

其中 \(E(a,b)\) 为在辗转相除求 \(\gcd(a,b)\) 过程中,把每步整除商的奇偶性做异或得到的结果。循环中维护 \(v\mathrel{\,\hat=\,}(a/b)\&1\),随后令 \((a,b)\leftarrow(b,a\bmod b)\) 即可,单次计算复杂度 \(O(\log\max(a,b))\)。读入全部黑格不断异或 \(g(r,c)\),最终异或和非零则先手赢,否则后手赢。

时间复杂度 \(O(N\log V)\),其中值域为 \(V = 10^9\)

link

拓展:CF494E Sharti

posted @ 2025-07-09 11:38  薛儒浩  阅读(10)  评论(0)    收藏  举报