题面
给定 (n) 条直线,直线的交点的 (x) 轴坐标两两不相同,求从左往右排的第 (k) 个交点的 (x) 轴坐标(精确到小数点后六位)。
题解
这题乍一看是道计算几何题,实际上这题和计算几何并没有什么关系。(雾)
考虑一条 (x = -∞) 的竖线。很显然,(n) 条直线和这条竖线的交点的交点的顺序,与这 (n) 条直线的斜率的顺序是相反的。
(类似的,(x = +∞) 的竖线与 (n) 条直线的交点的顺序与斜率的顺序是相同的。)
将 (x = -∞) 的竖线与 (n) 条直线的交点的顺序视为正序,可知 (x = +∞) 有 (frac{n * (n - 1)}{2}) 个逆序对。
设竖线 (l) 的初始位置为 (x = -∞) ,将 (l) 向右挪,则每经过一个直线与直线的交点,直线的逆序对数就会 (+1) 。
故可以二分直线的位置,每次 (check) 时,(O (n log n)) 求该竖线与 (n) 条直线的交点的逆序对,即可简单求出该竖线左侧有多少交点。