51Nod--1100-斜率最大

1100 斜率最大
平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。

(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等)

Input
第1行,一个数N,N为点的数量。(2 <= N <= 10000)
第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <= 10^9)
Output
每行2个数,中间用空格分隔。分别是起点编号和终点编号(起点的X轴坐标 < 终点的X轴坐标)
Input示例
5
1 2
6 8
4 4
5 4
2 3
Output示例
4 2

题解: 

计算几何的经典题目 (学cv的很有必要掌握)

1,  因为题目中说 任意两个点的x轴不相同,所以说每两个点之间必定有斜率

2,这种情况下, 将 众点 按x轴 sort 之后, 发现: 斜率最大的线段只可能存在于两两相邻的点之间。 

3, 多个相同的,需要一并输出,建立一个stack来存answer 即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int MAXN = 10000 + 5; int n, top, save[MAXN][2]; struct Node{int x, y, idx;
}nd[MAXN]; int cmp(const void *a, const void *b){Node *aa = (Node *)a; Node *bb = (Node *)b; return (aa->x - bb->x);
}double computeSlope(const Node &a, const Node &b){return (1.0*(a.y - b.y)/(a.x - b.x));
}int main(){freopen("in.txt", "r", stdin); int xx, yy; while(scanf("%d", &n) != EOF){for(int i=0; i<n; ++i){scanf("%d %d", &xx, &yy); nd[i].x = xx; nd[i].y = yy; nd[i].idx = i + 1; }qsort(nd, n, sizeof(nd[0]), cmp); top = 0; double tmp_slope, max_slope = -1000000.0; for(int i=1; i<n; ++i){tmp_slope = computeSlope(nd[i], nd[i-1]); if(max_slope < tmp_slope){max_slope = tmp_slope; top = 0; }else if(max_slope == tmp_slope){top++; }else{continue; }save[top][0] = nd[i-1].idx; save[top][1] = nd[i].idx; }for(int i=0; i<=top; ++i){printf("%d %d\n", save[i][0], save[i][1]);}}return 0;
}

  

转载于:https://www.cnblogs.com/zhang-yd/p/6389365.html

51Nod--1100-斜率最大相关推荐

  1. 51nod 1100:斜率最大

    题目链接 斜率最大点对横坐标必相邻 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4 + 100;str ...

  2. 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)

    二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...

  3. 51Nod 斜率最大

    Description 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点. (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序 ...

  4. 51nod 1451 合法三角形 判斜率去重,时间复杂度O(n^2)

    题目: 这题我WA了3次,那3次是用向量求角度去重算的,不知道错在哪了,不得不换思路. 第4次用斜率去重一次就过了. 注意:n定义成long long,不然求C(3,n)时会溢出. 代码: #incl ...

  5. hdu 5020 求三点共线的组合数(容器记录斜率出现次数)

    题意:       给你n个点,问你3点共线的组合数有多少,就是有多少种组合是满足3点共线的. 思路:      一开始抱着试1试的态度,暴力了一个O(n^3),结果一如既往的超时了,然后又在刚刚超时 ...

  6. 【bzoj1597- [Usaco2008 Mar]土地购买】斜率优化

    [597][Usaco2008 Mar]土地购买 [题目描述] 有N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000 ...

  7. 【CodeForces - 602D】Lipshitz Sequence(思维,单调栈,斜率单调性)

    题干: A function  is called Lipschitz continuous if there is a real constant Ksuch that the inequality ...

  8. 51nod《拉勾专业算法能力测评》测试有感

    昨天在逛博客的过程中,发现一个有趣的网站,也就是51nod,在那里有很多算法马拉松,网站看起来也不错,至于题目的难度也是有一点的. 在逛的过程中,就发现了这个比赛,就点进去看了看. 看到图片的介绍就想 ...

  9. 51nod 1009 数字1的数量(数学)

    题目描述: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 给定一个十进制正整数N,写下从1开始,到N的所有正数, ...

最新文章

  1. vue-ueditor 后端配置项没有正常加载_当运营商遇上极简流畅的产商品配置体验
  2. Android 抽屉效果Demo
  3. 陕西省2021年高考成绩结果查询,陕西招生考试信息网:2021年陕西高考成绩查询入口、查分系统...
  4. java的静态如何理解_java中的静态是什么?如何理解?
  5. c语言万能头文件用不,万能头文件不能用?
  6. 将 azw3 格式转换为 epub和mobi 格式
  7. 22fall 游戏/数字媒体/人机交互DIY留学申请经验贴
  8. wow插件入门资源整理
  9. PostgreSQL:“more than one owned sequence found“异常问题解决
  10. KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
  11. 倒计时2天:百度“文心一言”即将上线!
  12. #3、字符串转义字符
  13. Python备份CSDN博客
  14. 联想小新锐7000安装win10和ubuntu18.04双系统踩坑
  15. javascript学习1-变量和语句
  16. 智能家居app开发十大核心功能
  17. 在windows 10环境下安装 mujoco
  18. 【实用】JavaScript中Video使用详解过程(多视频列表循环播放)
  19. python:感知型对象和简单型对象
  20. c语言校友录系统,个人校友录管理系统下载

热门文章

  1. easyui datagrid java_EasyUI DataGrid 显示不了数据????
  2. 做系统ghost步骤图解_用好这工具,小孩都能会重装系统!
  3. dbnetlib sqlserver不存在或拒绝访问_SQL Server数据库损坏和修复
  4. C#:继承过程中的静态成员
  5. redis 超时失效key 的监听触发
  6. vb 垂直滚动条定位
  7. DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果
  8. 从线上慢sql看explain关键字
  9. Gateway Sentinel 做网关降级/流控,转发header和cookie
  10. Android 跳转到ViewPager指定页面