1100 斜率最大
基準時間限制:1 秒 空間限制:131072 kb 分值: 20
難度:3級演算法題
平面上有n個點,任意2個點確定一條直線,求出所有這些直線中,斜率最大的那條直線所通過的兩個點。
(點的編號為1-n,如果有多條直線斜率相等,則輸出所有結果,按照點的x軸座標排序,正序輸出。資料中所有點的x軸座標均不相等,且點座標為隨機。)
input
第1行,乙個數n,n為點的數量。(2 <= n <= 10000)output第2 - n + 1行:具體n個點的座標,x y均為整數(-10^9 <= x,y <= 10^9)
每行2個數,中間用空格分隔。分別是起點編號和終點編號(起點的x軸座標 input示例output示例51 26 8
4 45 4
2 3
4 2思路:通過畫圖描點可知,對於斜率最大的兩點一定是相鄰的。。。
簡單證明:對於 a,b,c三點,b點在a,c兩點中間,現在對於 b點分情況討論:
1. b點位於 ac連線下方,那麼很明顯bc斜率最大
2.b點位於 ac連線上方,則明顯 ab斜率最大
3.b點位於 ac連線上,則 ab與ac斜率相同
由上知 對於斜率最大的兩點一定是相鄰的
code:
#include#includeusing namespace std;
struct node
sort(a,a+n);
double ans=-1;
int u,v;
for(int i=1;i=a[i-1].y&&ans
cout<
return 0;
}
51Nod 1100 斜率最大
1100 斜率最大 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 收藏 關注 平面上有n個點,任意2個點確定一條直線,求出所有這些直線中,斜率最大的那條直線所通過的兩個點。點的編號為1 n,如果有多條直線斜率相等,則輸出所有結果,按照點的x軸座標排序,正序輸出。...
51nod1100 斜率最大
1100 斜率最大 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 平面上有n個點,任意2個點確定一條直線,求出所有這些直線中,斜率最大的那條直線所通過的兩個點。點的編號為1 n,如果有多條直線斜率相等,則輸出所有結果,按照點的x軸座標排序,正序輸出。資料中所有點...
51nod 1100 斜率最大
1100 斜率最大 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 平面上有n個點,任意2個點確定一條直線,求出所有這些直線中,斜率最大的那條直線所通過的兩個點。點的編號為1 n,如果有多條直線斜率相等,則輸出所有結果,按照點的x軸座標排序,正序輸出。資料中所有點...