公式

E - Restricted Nim 1 解説 by sounansya


このゲームの勝敗は以下のように判定することができます:

  • \(A_1,A_2,\ldots,A_N\) の総 \(\mathrm{XOR}\) が \(\color{red}1\) であれば後手必勝で、\(1\) でなければ先手必勝である。

これは数学的帰納法により示すことができます。

証明:

総 \(\mathrm{XOR}\) が \(1\) である状態を \(P\) 状態、そうでない状態を \(N\) 状態と呼びます。

\(P\) 状態であることが後手必勝であることと同値であることを示すためには、以下の \(3\) つを示せば良いです:

  • 終了盤面(操作できないような盤面)が \(P\) 状態であること。
  • \(P\) 状態からどのように操作しても \(P\) 状態に到達できないこと。
  • \(N\) 状態から \(P\) 状態に到達できる操作が必ず存在すること。

この \(3\) つを順に示していきます。

[1] 終了盤面(操作できないような盤面)が \(P\) 状態であること

終了盤面は石の合計が \(1\) 個になることです。\(N-1\) 個の \(0\) と \(1\) 個の \(1\) の総 \(\mathrm{XOR}\) は \(1\) なので、これは \(P\) 状態です。

[2] \(P\) 状態からどのように操作しても \(P\) 状態に到達できないこと

普通の Nim と同じ議論ができます。

[3] \(N\) 状態から \(P\) 状態に到達できる操作が必ず存在すること

\(A_1,A_2,\ldots,A_N\) の総 \(\mathrm{XOR}\) が \(1\) 以外だとします。

\(S\) を \(A_1,A_2,\ldots,A_N,1\) の総 \(\mathrm{XOR}\) とします。仮定より \(S\neq 0\) です。

(1) \(S \geq 2\) のとき

\(S\) の最上位 bit が立っているような \(A_i\) が存在します。\(S\oplus A_i\) は \(S\) の最上位 bit が \(0\) となるので \(A_i > S\oplus A_i\) が成り立ちます。したがって、\(i\) 番目の山から \(A_i-(S \oplus A_i)\) 個の石を取る操作を行うことで \(P\) 状態に到達できます。

(2) \(S=1\) のとき

石が奇数個の山が必ず存在するので、そのうちの \(1\) つから石を \(1\) 個取れば良いです。

いずれの操作でも \(N\) 個の山の石の個数の総 \(\mathrm{XOR}\) が \(1\) となるため、石が奇数個の山が必ず存在します。


以上より、\(A_1,A_2,\ldots,A_N\) の総 \(\mathrm{XOR}\) が \(\color{red}1\) であることと後手必勝であることが同値であることがわかりました。したがって、\(N\) 個の総 \(\mathrm{XOR}\) を計算し、\(1\) ならば Bob を、\(1\) でないならば Alice を出力すれば良いです。