AtCoder Beginner Contest 225 E 問題 フ
問題
提出解答
問題の概要
を原点とする座標平面上において, 2点 を結ぶ線分を と書く.
個の図形 が与えられる. 各 は以下の線分の和集合である.
ここで, 各 に対して,
とする.
このとき, で, 以下の条件を満たすとき, の最大値を求めよ.
- ならば, の内部と の内部は共通部分を持たない.
制約
- 組 は全て異なる.
解法
に対して,
とする.
このとき, に対して, 各区間 を とすると, 以下は同値である.
- の内部と の内部は共通部分を持たない.
- 2つの開区間 は互いに素である.
なお, 証明は における の傾きを見れば良い.
このことから, 以下の問題に帰着される.
これは区間スケジューリング問題と呼ばれており, 以下の解き方で解くことができる.
計算量はソート部分がボトルネックになり, である.
ただし, の並び替えは実数で比較すると, 誤差によって間違える可能性があるので, 座標平面上の点とみて, 偏角ソートで行う.