Official

D - Choosing Up Sides Editorial by camypaper


説明の簡単さのため admin 解を紹介します。

\(\mathrm{popcount(n)}\)\(n\)\(2\) 進表記したときの 1 の個数とします。 また、\(x \ \mathrm{AND} \ y\)\(x\)\(y\) のビットごとの論理積とします。

\(M = 2^{N-1}\) とします。 一回の操作で、異なるチームであるような \(2\) 人の組の個数は \(M^2\) 個増加します。 よって、\((n+m)M^2 = m \binom{2M}{2}\) が成立する必要があります。 これを解くと、\(n:m = M-1:M\) となります。

よって、すぬけ監督の目的を達成するためには \(2^{N}-1\) の倍数回操作を行う必要があることがわかります。 結局以下のように \(2^{N}-1\) 回の操作を行うことですぬけ監督の目的は達成可能でこれが最小の操作回数です。

  • \(i\) 回目の操作では人 \(j\)\(\mathrm{popcount(i \ \mathrm{AND} \ j)}\) が奇数ならばA、偶数ならばBチームに所属させる。

これは \(O(4^N)\) で実行可能で \(N \leq 8\) より十分高速です。

posted:
last update: