B - Fennec VS. Snuke 2 Editorial
by
potato167
\(4\leq N\) の場合に、\(\sum A\) が偶数なら後手が、そうでないなら先手が勝つことを示します。
まず、集合 \(\bar{S}\) を 全体集合を \(\{1, 2, \dots , N\}\) としたときの \(S\) の補集合と定義します。
\(\sum A\) が偶数のとき、先手の人は、\(|S| = N - 2\) であるタイミングで以下を満たす必要があります。
- \(\bar{S} = \{a, b\}\) とすると、\(A_{a}, A_{b}\) の偶奇が異なる。
もし、\(|S| = N - 3\) のタイミングで後手の人に手番が回ると、後手の人は上の条件を満たさないように \(|S| = N - 2\) にするような選び方が必ず存在するため、先手の人が勝つには \(|S| = N - 4\) から \(|S| = N - 3\) に変化するときの操作を後手の人に行わせる必要があります。
その操作を後手の人に強制的にさせることができる条件は、 以下と同値です。
- \(|S|= N - 4\) のタイミングでの \(\sum_{a \in \bar{S}} A_{a}\) が奇数
この条件は、\(a\in \bar{S}\) かつ、\(A_{a}\) が奇数であるようなものが \(1\) つもしくは \(3\) つであることと同値です。よって、後手の人は、奇数が \(1\) つならそれを、 \(3\) つなら偶数のものを選べば勝つことができます。
よって、\(4\leq N\) かつ \(\sum A\) が偶数ならば、後手が必ず勝つことができます。
全く同じ議論で、 \(4\leq N\) かつ \(\sum A\) が奇数ならば先手が必ず勝つことが証明できます。
おまけ
\(N = 1\) のときは先手必勝です。
\(N = 2\) であるときは後手が先手と異なるものを選べば勝ちです。
\(N = 3\) のときは、自分のターンで \(|S| = 2\) したら負けなので、先手が最初に選んだものを選び続けるのが最適になります。よって、先手は \(A_{i}\) が奇数である \(i\) を選べば勝つことができます。よって、\(A\) に奇数が含まれていることと先手必勝であることが同値です。
posted:
last update: