公式

B - Rivalry 解説 by PCTprobability


まず、\(X \ge 1\) が必要です。\(A\) の最小値のいずれかに注目するとその両隣は明らかに最小値未満でないため、\(0\) 以外を最小値として置くことが出来ないからです。

\(X = 1\) のケースを考えます。まず、\(2\) の隣には \(0\)\(1\) を置くしかありません。そして \(2\) の隣の \(1\) のもう片方の隣には \(0\) を置くしかありません。よって、\(Z \ge 1\) の場合、\(Z = 1\) かつ \(Y \le 2\) が必要です。そしてこれらは \((0,2),(0,1,2),(0,1,2,1)\) のように実際に構築可能です。また、\(Z = 0\) のときを考えると、\(Y = 0,2\) の時のみ \((0),(0,1,1)\) として構築可能です。よって、\(X = 1\) のケースの必要十分条件は \(Y \le 2\) かつ \(Z \le 1\) かつ \((Y,Z) \neq (1,0)\) であることとなります。

\(X\) が一般のケースを考えます。これは、\(X = 1\) のケースを \(X\) 個連結させたものになります。よって、\(Y \le 2X,Z \le X\) が必要です。ですがこれは十分条件ではありません。\(X = 1\) の時の \((Y,Z) = (1,0)\) が条件を満たさないことに注意すると、\(Y\) が奇数かつ \(Z = 0\) のケースは条件を満たしません。

上記をまとめると、\(X\) が一般の時の条件は \(X \ge 1\) かつ \(Y \le 2X\) かつ \(Z \le X\) かつ「\(Y\) が偶数もしくは \(Z \ge 1\)」が必要条件です。また、この条件は十分条件でもあります。これを実際に条件を満たす \(A\) を構築することで証明します。

まず、\(0\)\(X\) 個並べます。そしてその内 \(Z\) 個の隙間に \(2\) を挿入します。そして、\(Y\) が奇数の場合は \(Z \ge 1\) であるはずなので、\((0,2,0)\) となっている部分を \(1\) 個選び、\((0,1,2,0)\) となるように \(1\) を挿入して \(Y\) を偶数にしておきます。\(Y\) を偶数にしたら、\((0,0) \rightarrow (0,1,1,0),(0,2,0) \rightarrow (0,1,2,1,0)\) という操作を \(\frac{Y}{2}\) 回行えばよいです。\(Y \le 2X\) よりこれは必ず可能です。

よって、上記を適切に実装することで各テストケースについて \(\mathrm{O}(1)\) でこの問題を解くことが出来ます。

投稿日時:
最終更新: