Official

N - Numerical Error Editorial by sounansya


原案:Mitsubachi


まず、 \(N\geq 21\) の場合は必ず解が存在します。

証明:

\(A\) の要素に重複が存在する場合は明らかに解が存在します。以降は \(A\) の要素に重複が存在しない場合を考えます。

\(M=11\) の場合を考えます。このとき \(\displaystyle s_X,s_Y \le \sum_{k=1}^{11} \frac1k<3.02\) が成り立ちます。一方、 \(N\) 個の中から \(11\) 個選ぶ方法は \(\displaystyle \binom{N}{11}\) 通りでり、特に \(N \geq 21\) の場合は選ぶ方法は \(\displaystyle \binom{N}{11} \geq \binom{21}{11}>3.5\times 10^5\) 通り存在します。このことから鳩の巣原理より \(N\geq 21\) では必ず解が存在することが分かります。

さらに、解が存在する場合には \(\displaystyle M=\left\lfloor \frac{N}2\right\rfloor\) に解が必ず存在します。

証明:

解を一つ取り、それを \(X,Y\) とします。\(X\cap Y\) が空でない場合はそれらを \(X,Y\) 両方から取り除くことで \(X\cap Y\) を空集合にすることができます。このとき \(\displaystyle |X|=|Y|\le \frac N2\) が成り立ち、 \(X,Y\) 両方に同じ適当な要素を追加することで \(\displaystyle M=\left\lfloor \frac{N}2\right\rfloor\) にすることができます。

実装では \(N \leftarrow \min(N,21)\) とし、\(\displaystyle M=\left\lfloor \frac{N}2\right\rfloor\) して答えが存在するか探索すれば良いです。

浮動小数点数型を用いる場合は誤差に注意してください。誤差の関係で注意しても正解できない可能性もあります。

posted:
last update: