L - Unfair Nim 解説
by
sounansya
[1] \(X=Y\) のとき
不偏ゲームで、各山の Grundy 数は \(A_i \bmod (Y+1)\) なのでこれらの総 \(\mathrm{XOR}\) が \(0\) であれば後手必勝、\(0\) でなければ先手必勝です。
[2] \(X>Y\) のとき
Alice が \(X\) 手取れるところを \(Y\) 手取れると制限しても Alice が勝つ場合、明らかに先手必勝です。したがって、\(A_i \bmod (Y+1)\) の総 \(\mathrm{XOR}\) が \(0\) でないならば先手必勝です。
また、\(A_i \geq Y+1\) を満たす \(i\) が存在する場合、Alice はその山から石を \(Y+1\) 個取ることで総 \(\mathrm{XOR}\) が \(0\) のまま Bob にターンを渡すことができます。したがって、\(A_i \geq Y+1\) を満たす \(i\) が存在する場合も先手必勝です。
一方、\(A_i \bmod (Y+1)\) の総 \(\mathrm{XOR}\) が \(0\) で全ての \(i\) に対し \(A_i < Y+1\) を満たす場合、Alice は \(Y+1\) 個以上石を同時に取ることができないため \(X=Y\) の場合と同じです。したがって、この場合には後手必勝となります。
以上をまとめ、
- \(A_i \bmod (Y+1)\) の総 \(\mathrm{XOR}\) が \(0\) でない
- \(A_i \geq Y+1\) を満たす \(i\) が存在する
場合は先手必勝で、そうでない場合は後手必勝です。
[3] \(X<Y\) のとき
[2] の考察より、
- \(A_i \bmod (X+1)\) の総 \(\mathrm{XOR}\) が \(0\)
- \(A_i \geq X+1\) を満たす \(i\) が存在しない
の両方を満たす状態に初手で移すことができれば先手必勝です。
これは \(A_i\) が最大となる \(i\) に対し \(A_i \bmod (X+1)\) の総 \(\mathrm{XOR}\) が \(0\) となるように着手した際に、\(A_i\) の最大値が \(X+1\) 未満となるかを判定すれば良いです。
