热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

6290.倾斜的线

DescriptionInputOutputSampleInput61569817433112412868636515040122123982526131695587589
Description

Input

Output

Sample Input

6 15698 17433
112412868 636515040
122123982 526131695
58758943 343718480
447544052 640491230
162809501 315494932
870543506 895723090 

Sample Output

193409386/235911335
Data Constraint

Solution

题意是给你n个点和P,Q,要你求两个点构成的斜率最接近于P/Q,以“A/B”的形式输出斜率。
相当于是然你求(y1-y2)/(x1-x2) 最接近于P/Q的值X和Y。
通分,得到:
Q(y1-y2)/Q (x1-x2)最接近于P(x1-x2)/Q(x1-x2)
将分母去掉:
Q(y1-y2)最接近于P(x1-x2)
拆项:
Qy1-Qy2最接近于Px1-Px2
移项:
Qy1-Px1最接近于Qy2-Px2

至此,我们只用对每一个点的上式排一遍序,去相邻的比较即可。

考虑另一种思路。

我们将式子拆成:
| Q(y1-y2) / Q(x1-x2)-P(x1-x2) / Q(x1-x2) |最小

| ((Q(y1-y2)-P(x1-x2)) / Q(x1-x2) |最小

| ((Qy1-Px1)-(Qy2-Px2)) / Qx1-Qx2 |最小

我们将这个式子看成斜率的形式,
即Q(y1-Px1)=Y1,Q(y2-Px2)=Y2,Qx1=X1,Qx2=X2,得:
| (Y1-Y2)/(X1-X2) | 最小
也就是我们将每个点用上式变成一个新点,再求两个点所构成的斜率的绝对值最小值。
若两个纵坐标直接有一个点,那么这中间点于两边点构成的斜率总有一个会比两边点构成的斜率小。
因此我们将点按照纵坐标排序,
用两两相邻的纵坐标更新答案即可。

注意精度问题。

Code

#include
#include
#include
#define I int
#define F(i,a,b) for(I i&#61;a;i<&#61;b;i&#43;&#43;)
#define Fd(i,a,b) for(I i&#61;a;i>&#61;b;i--)
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define N 200010
#define db long double
using namespace std;
ll n,P,Q,Ax,Ay,d;
db ans&#61;1e17;
struct node{ll x,y,z;}a[N];
ll gcd(ll x,ll y){if(x%y&#61;&#61;0) return y;return gcd(y,x%y);
}
I cmp(node a,node b){return a.z>b.z;}
db S(db x){if(x<0) return -x;return x;
}
I main(){freopen("slope.in","r",stdin);freopen("slope.out","w",stdout);scanf("%lld%lld%lld",&n,&P,&Q);F(i,1,n){scanf("%lld%lld",&a[i].x,&a[i].y);a[i].z&#61;Q*a[i].y-P*a[i].x;}sort(a&#43;1,a&#43;1&#43;n,cmp);F(i,1,n-1){db s&#61;S((db)(a[i].y-a[i&#43;1].y)/(db)(a[i].x-a[i&#43;1].x)-(db)P/(db)Q);if(ans>s){ans&#61;s;Ax&#61;a[i].y-a[i&#43;1].y;Ay&#61;a[i].x-a[i&#43;1].x;}}d&#61;gcd(Ax,Ay);printf("%lld/%lld\n",Ax/d,Ay/d);return 0;
}

 




作者&#xff1a;zsjzliziyang 
QQ:1634151125 
转载及修改请注明 
本文地址:https://blog.csdn.net/zsjzliziyang/article/details/99697172


推荐阅读
  • 题目描述Takuru是一名情报强者,所以他想利用他强大的情报搜集能力来当中间商赚差价。Takuru的计划是让Hinae帮他去市场上买一个商品,然后再以另一个价格卖掉它。Takur ... [详细]
  • DescriptionclickmeSolution套路的状压期望DP题。。。考虑倒退期望:设fi,jrolepresentationstyleposi ... [详细]
  • JZOJ 1266. 玉米田
    1266.玉米田(cowfood.pasccpp)(FileIO):input:cowfood.inoutput:cowfood.outTimeLimits:1000msMemor ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 题面传送门Solution看到什么最大值最小肯定二分啊。check直接跑一个二分图匹配就好了。orzztl!!!代码实现*mail:mle ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:城市建设
    本文由编程笔记#小编为大家整理,主要介绍了城市建设相关的知识,希望对你有一定的参考价值。本文涉及:cdq分治、MST一道十分精妙的cdq分 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有