日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

11.02T1 几何

發布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11.02T1 几何 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傾斜的線

(slope.cpp)

【問題描述】

給定兩個正整數P和Q。在二維平面上有n個整點。現在請你找到一對點使得經過它們的直線的斜率在數值上最接近P/Q(即這條直線的斜率與P/Q的差最小),請輸出經過它們直線的斜率p/q。如果有兩組點的斜率的接近程度相同,請輸出較小的斜率。保證答案的p/q> 0,即輸出的p和q都是正整數。

【輸入格式】

輸入文件名為slope.in

第一行三個正整數n P Q。

接下來n行每行兩個正整數x y表示一個點的坐標。保證不存在x坐標相同或者y坐標相同的點(即斜率不會為無窮大與0)。

【輸出格式】

輸出文件名為slope.out

輸出僅一行,格式為p/q,表示最接近的斜率,其中p和q都是正整數。

【樣例輸入與輸出】

example_slope1.in

example_slope1.out

6 15698 17433

112412868 636515040

122123982 526131695

58758943 343718480

447544052 640491230

162809501 315494932

870543506 895723090

193409386/235911335

?????? 更多樣例請見example/slope/目錄。

【數據范圍】

對于1~10號測試點(50%):n<=1000。

對于所有測試點(100%):n<=400000。

?

?

?

?

把所有點按照P/Q斜率投射到y軸上排序,可以證明相鄰的點對應的線段一定有一條是最優解,因為不相鄰的點與給定的斜率夾角比相鄰的大

code:

1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #define N 1000006 6 using namespace std; 7 struct node{ 8 long double x,y,w; 9 }e[N]; 10 bool cmp(const node&a,const node&b){ 11 return a.w<b.w; 12 } 13 long double getk(int i,int j){ 14 return (e[i].y-e[j].y)/(e[i].x-e[j].x); 15 } 16 int gcd(int a,int b){ 17 if(a<b)swap(a,b); 18 while(a=a%b)swap(a,b); 19 return b; 20 } 21 int main(){ 22 int n; 23 long double P,Q; 24 cin>>n>>P>>Q; 25 for(int i=1;i<=n;i++){ 26 cin>>e[i].x>>e[i].y; 27 e[i].w=e[i].y-e[i].x*P/Q; 28 } 29 sort(e+1,e+n+1,cmp); 30 long double delta=9999999.0; 31 int now1,now2; 32 for(int i=1;i<n;i++){ 33 if(fabs(getk(i,i+1)-P/Q)<delta){ 34 now1=i,now2=i+1; 35 delta=fabs(getk(i,i+1)-P/Q); 36 } 37 else if(fabs(getk(i,i+1)-P/Q)==delta){ 38 if(getk(i,i+1)-P/Q<0){ 39 now1=i,now2=i+1; 40 } 41 } 42 } 43 int deltax=e[now1].x-e[now2].x,deltay=e[now1].y-e[now2].y; 44 if(deltax<0)deltax=-deltax,deltay=-deltay; 45 int GCD=gcd(abs(deltax),abs(deltay)); 46 cout<<deltay/GCD<<"/"<<deltax/GCD; 47 return 0; 48 }

over

轉載于:https://www.cnblogs.com/saionjisekai/p/9898487.html

總結

以上是生活随笔為你收集整理的11.02T1 几何的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。