公式

G - Make T 解説 by keisuke6


この解は誤っています。「すべての宇宙人は最低2人の宇宙人と手を繋がなければならない」とすると正当です。

「ちょうど \(3\) 体の宇宙人と手を繋ぐこと」を「条件を満たす」と呼ぶことにします。また、\((x,y) (0 \leq x \leq N-1, 0 \leq y \leq N-1)\) を満たす位置にいる宇宙人を「内部にいる宇宙人」と呼ぶことにし、それ以外の宇宙人を「外側にいる宇宙人」と呼ぶことにします。

明らかに \((0,0), (0,N-1), (N-1,0), (N-1,N-1)\)\(4\) 体の宇宙人は、距離が \(1\) であるような宇宙人が \(2\) 体しかいないため明らかに条件を満たすことはできません。

また、宇宙人 \((0,1), (0,2) \ldots (0,N-2)\) の全ての宇宙人は、距離が \(1\) であるような宇宙人が \(3\) 体しかいないため、最大限手をつなぐことによってのみ条件を満たすことができます。

そのため、\((0,0)-(0,1)\) 間、\((0,1)-(0,2)\) 間、\(\dots\) \((0,N-2)-(0,N-1)\) 間は全て手を繋がせるとしてよいです。

また、\((0,1)-(1,1)\) 間が手を繋いでいなかった場合、ここは手を繋がせるとしてもよいです。\((0,1)\) の宇宙人は条件を満たすようになる一方、新たに手を繋がせることにより条件を満たさなくなる可能性のある宇宙人が \((1,1)\) しかいないため、解が悪化することはありません。

同様にして、\((0,2)-(1,2)\) 間、 \(\ldots\) \((0,N-2)-(1,N-2)\) 間は全て手を繋がせるとして解が悪化することはありません。

また、今回は外側の宇宙人のうち \(x=0\) なる位置にいる宇宙人が関与する手のつなぎ方のみ考えましたが、同様の議論を \(x=N-1\)\(y=0\)\(y=N-1\) を満たす外側の宇宙人についても行うことによって、結局外側にいる宇宙人は全て最大限手をつなぐものとしてよいです。

ここで、今回の問題の一連の操作を、「いったん全ての宇宙人に手を繋がせた後、もともと手を繋いでいなかった宇宙人のペアのみ手をほどくことを許す」というように言い換えてみます。このように変えても一般性を失いません。

この問題において、すでに条件を満たす宇宙人が条件を満たさなくなるような操作により解が改善することはないことから、最終的な状態において手を \(2\) 本以下繋いでいるような宇宙人は \((0,0), (0,N-1), (N-1,0), (N-1,N-1)\) を除くと存在しないことが示せます。

以上の議論より、この問題は二部グラフ上の最大マッチングの問題に帰着されました。頂点数、辺数がともに \(O(N^2)\) であるので、Hopcraft-Karp アルゴリズムによって \(O(N^3)\) でこの問題を解くことができます。

投稿日時:
最終更新: