AtCoder Beginner Contest 248 E問題 K-colinear Line
問題
提出解答
問題の概要
座標平面上に 異なる 点 がある.
このとき, 点以上を通る直線の数を求め, 有限ならばその数を無限ならばその旨を報告せよ.
制約
解法 1 ( のとき)
のとき, に対して, 直線 は点 を通る直線であり, 写像 は単射である. よって, を通る直線が無限個あることから, 求めるべき答えは無限である.
解法 2 ( のとき)
とする. このとき, 以下のような事実がある.
Euclid 幾何における公準 I (+)
相異なる2点を通る直線は唯一存在する.
この事実から, 条件を満たすような直線は高々 本であることがわかる. そして, そのような直線は相異なる2点 を通る直線達から導くことができる.
よって, 次のようにして計算できる.
- を満たす に対して, 以下を行う.
- と を通る直線 を求める.
- 上にある点 の数 を求め, ならば, に を加える.
- の濃度を加える.
直線を管理する際, という形で記録するよりも, の方が管理しやすい. また, この方式では, 一見見た目が異なっていても同じ式の場合がある *1.
これにより, 計算量 で求めることができる.
*1:例 : と