首页 > 代码库 > 51nod - 1100 斜率最大
51nod - 1100 斜率最大
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1100
虽然这题数据有点小,但是做题嘛,总是要有追求的,不能什么都靠暴力。
随便画个图就可以看到,斜率最大的情况它们的横坐标一定是相邻的。于是,最后只要排个序就好了。
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e4 + 100; 4 struct st 5 { 6 int x, y, pos; 7 }a[maxn]; 8 bool cmp(st a, st b) { 9 return a.x < b.x;10 }11 double xielv(st a, st b) {12 return (a.y-b.y)*1.0/(a.x-b.x);13 }14 int main() {15 int n, x, y; 16 scanf("%d", &n);17 for(int i=0; i<n; i++) {18 scanf("%d%d", &x, &y);19 a[i] = (st) {x, y, i+1};20 }21 sort(a, a+n, cmp);22 double maxxl = -1e9;23 int index = -1;24 for(int i=1; i<n; i++) {25 if(maxxl < xielv(a[i], a[i-1])) {26 maxxl = xielv(a[i], a[i-1]);27 index = i;28 }29 }30 if(a[index].x < a[index-1].x) printf("%d %d\n", a[index].pos, a[index-1].pos);31 else printf("%d %d\n", a[index-1].pos, a[index].pos);32 return 0;33 }
51nod - 1100 斜率最大
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。