您的位置:首页 > 其它

51nod 1100 斜率最大

2016-12-07 21:25 309 查看
题目链接:传送门

计算几何水题,排序遍历一遍能过,要考虑斜率的正负值

代码如下:

#include <bits/stdc++.h>
using namespace std;
#define N 10010
#define mod 100000
#define inf 2000000000000000ll
struct rng{
int x,y;
int num;
}t
;
int a
,b
;
bool cmp(rng p,rng q){
if(p.x<q.x) return 1;
else return 0;
}
int main(){
int i,j,n,m;
cin>>n;
int cnt=0;
for(i=1;i<=n;i++){
cin>>t[i].x>>t[i].y;
t[i].num=i;
}
sort(t+1,t+1+n,cmp);
long double Max=0;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++){
long double k=(double)(t[j].y-t[i].y)/(t[j].x-t[i].x);
if(k>Max){
cnt=0;
Max=k;
a[++cnt]=t[i].num;
b[cnt]=t[j].num;
continue;
}
if(k==Max){
a[++cnt]=t[i].num;
b[cnt]=t[j].num;
}
}
for(i=1;i<=cnt;i++)
cout<<a[i]<<" "<<b[i]<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: