Wannafly挑战赛15 E 小W的斜率

该博客介绍了如何解决一类平面点对斜率最值问题。通过将原坐标系转换,将寻找最接近给定斜率的问题转化为寻找斜率最大的相邻点对。博主给出了详细思路和解决方案,并提供了代码实现。
摘要由CSDN通过智能技术生成

内容、图片部分转载至这两位大佬的博客:
浅谈一类平面点对斜率最值问题
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

  1. A B C 三点共线,则 k A B = k B C = k A C k_{AB}=k_{BC}=k_{AC} kAB=kBC</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值