内容、图片部分转载至这两位大佬的博客:
浅谈一类平面点对斜率最值问题
Wannafly挑战赛15 E 小W的斜率
题目描述
小w非常喜欢某个有理数P/Q,而且他非常喜欢用它来进行一些玄学操作。他在二维平面上撒下了n个点,这些点相互不同,但一番观察之后,他失望的发现并没有任何两个点连成的直线的斜率是P/Q。你能不能告诉他在这些斜率中最接近P/Q的是多少。
输入
第一行三个正整数n,P,Q
接下来n行,每行两个整数xi,yi表示第i个点的坐标
输出
一个有理数P’/Q’表示最接近P/Q的斜率。
保证答案唯一且为最简分数,且P’/Q’>0
斜率为无穷时可表示为1/0
数据规模
对于30%的数据:n<=8100
对于60%的数据:n<=60000
对于100%的数据:5<=n<=250000,1<=P<=100000,1<=Q<=100000,0<=xi,yi<=10^9
思路
首先有这样的子问题:给出平面n个点 , 求出任意两点组成的直线中斜率最大的两个点。
有结论:如果我们按照 x 坐标排好序的话,斜率最大的点对一定是相邻的两个点。
证明:假设排序得到了三点 A B C
-
A B C 三点共线,则 k A B = k B C = k A C k_{AB}=k_{BC}=k_{AC} kAB=kBC</