AtCoder Beginner Contest 259 D問題 Circumferences
問題
提出解答
問題の概要
個の円 がある. の中心は , 半径は である.
2点 が与えられる. 次のことは可能か?
- から少なくとも1つの円の円周上である点を通って, に到達可能.
ただし, は共にある円周上の点である.
制約
- はある円周上の点
解法
以下のことが成り立つ.
2つの円 に対して, 上の任意の点 と 上の任意の点 において から へ の円周上を辿って到達可能であることの必要十分条件は が共有点を持つことである.
また, が共通部分を持たない場合は, 上の任意の点 と 上の任意の点 において から へ の円周上を辿って到達不可能である
2つの円 において, 2つの円の中心の距離を , 2つの円の半径をそれぞれ とするとき, 以下が成り立つ.
- のうち, 一方が他方に含まれる
- は内接する
- は交わる
- は外接する
- のうち, 一方の外部に他方が含まれる
このことから, が共有点を持つことの必要十分条件は である.
これらの事実から, 次のような無向グラフ を作成すればよい. ただし, 2点 の距離を と書くことにする.
このとき, 点 が円 の円周上の点, 点 が円 の円周上の点であったとしたとき, が において同じ連結成分上の点かどうかをみればよく. 同じ連結成分上の点ならば可能, そうで無いならば不可能である *1.
時間計算量については各 に対して, かどうかを調べる必要があるため, である.
*1: の候補はそれぞれ複数ある場合があるが, このような場合でも の定義から結果は取り方に依らないことがわかる.