CF1446F Line Distance

发布时间 2023-09-10 21:39:42作者: Ender_32k

Dqy 7。

计几结论拍脸,感觉不如原神。

Binary search is your friend.

考虑二分答案,二分一个距离 \(r\),考虑求出 \(d(O,AB)>r\) 的无序点对 \((A,B)\) 数量。

\(r\) 为半径作圆 \(C:x^2+y^2=r^2\)。考虑如果一个点 \(A\)\(C\) 的边界或内部,那么任意的 \(d(O,AB)\) 都会 \(\le R\)。于是先排除 \(x_{A}^2+y_{A}^2\le r^2\) 的情况。

\(A,B\) 在圆的外部时,\(d(O,AB)>r\) 当且仅当直线 \(AB\) 与圆 \(C\) 无交。

\(A\) 关于圆 \(C\) 的切点弦对应的劣弧为 \(A_1A_2\)(为什么没有弧的 \(\LaTeX\) 记号?因为这里不支持 amsmath 宏包……)。难以发现,直线 \(AB\) 与圆 \(C\) 无交,当且仅当 \(A_1A_2\)\(B_1B_2\) 有交,证明是简单的。

难以发现,\(A_1A_2\)\(B_1B_2\) 有交当且仅当 \(A_2A_1\)\(A_1A_2\) 翻转)与 \(B_1B_2\) 有交。于是从某个点开始将圆 \(C\) 断开,每个弧 \(A_1A_2\) 都可以找到一段弧度区间与其对应(如果区间被这个点断开可以取翻转后的区间)。

然后就变成了给若干个形如 \([l_i,r_i]\) 的区间,求有交的区间对的个数。二维数点即可。复杂度 \(O(-n\log n\log_\epsilon w)\)\(\epsilon=10^{-6}\)