E - K-colinear Line Editorial by souta_1326


\(K\geq 2\) の場合に \(O(N^2 \log N)\) で解く別解を紹介します。
直線 \(l\)\(K\) 個以上の点を通ることは、以下のように言い換えることができます。

\(1 \leq i \lt j \leq N\) かつ \(2\)\((X_i,Y_i),(X_j,Y_j)\) を通る直線が \(l\) と等しい \((i,j)\) の組が \(\frac{K(K-1)}{2}\) 個以上存在する

これは、key を直線の傾きと \(y\) 切片, value をその直線が通る \(2\) 点の組の個数とした map に格納することで実装できます。直線が \(y\) 軸と平行であるときの対処に注意しましょう。

実装例(C++)

posted:
last update: