E - Three View Drawing Editorial by zkou
解説大まかな方針としては,\((a, b, c), (b, c, a), (c, a, b)\) のような \(3\) つ組を \(3\) つずつまとめて \(1\) グループとして追加・除去する方針を考える. なお,例外的に \((a, a, a)\) は \(1\) つで \(1\) グループとなる.
上記の方針に整合するように,まずは \(K = N^2\) の場合を構築する. たとえば \(x + y + z \equiv 0 \pmod{N}\) を満たす点集合を取ると条件を満たす. ここからグループ単位で点を除去して任意の個数の場合を構成したい.除きたい個数を \(r\) とする. ほとんどのグループは \(3\) つの元からなるので,\(r \bmod 3\) 個取り除いた後に \(3\) 個ずつ取り除く方針で考える.
まず,\(N \equiv 0 \pmod{3}\) の場合を考える. この場合は \((a, a, a)\) のように \(1\) つで \(1\) グループになるのは \((0, 0, 0)\), \((N/3, N/3, N/3)\), \((2N/3, 2N/3, 2N/3)\) のみであり,残りは全て \((a, b, c)\) のように \(3\) つで \(1\) グループとなる. したがって,\(r \bmod 3\) 個だけ前者のグループから除き,あとは後者のグループから必要なだけ除けばよい.
次に,\(N \not\equiv 0 \pmod{3}\) の場合を考える. この場合は \((a, a, a)\) のように \(1\) つで \(1\) グループになるのは \((0, 0, 0)\) のみである. それゆえ,先ほどの方針だと,\(r \bmod 3 = 2\) の場合だけ処理できず,この場合のみ別の方法を考える必要がある. \((1, 1, t)\) という組が属するグループを考えると,\(t \neq 1\) なので,\(3\) 個の元からなるグループである. このグループを取り除いたあと \((1, 1, 1)\) を追加することができ,これで \(K = N^2 - 2\) を構成できる. あとは \(3\) つの元からなるグループを取り除いていくと,最終的に \((0, 0, 0)\) と \((1, 1, 1)\) のみにまで減らせるので,\(r \bmod 3 = 2\) の場合も任意の \(K\) に対して構成できている.
posted:
last update: