51Nod--1100-斜率最大
51Nod--1100-斜率最大
第1行,一个数N,N为点的数量。(2 <= N <= 10000) 第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <= 10^9)
每行2个数,中间用空格分隔。分别是起点编号和终点编号(起点的X轴坐标 < 终点的X轴坐标)
5 1 2 6 8 4 4 5 4 2 3
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-斜率最大相关推荐
- 51nod 1100:斜率最大
题目链接 斜率最大点对横坐标必相邻 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4 + 100;str ...
- 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...
- 51Nod 斜率最大
Description 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点. (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序 ...
- 51nod 1451 合法三角形 判斜率去重,时间复杂度O(n^2)
题目: 这题我WA了3次,那3次是用向量求角度去重算的,不知道错在哪了,不得不换思路. 第4次用斜率去重一次就过了. 注意:n定义成long long,不然求C(3,n)时会溢出. 代码: #incl ...
- hdu 5020 求三点共线的组合数(容器记录斜率出现次数)
题意: 给你n个点,问你3点共线的组合数有多少,就是有多少种组合是满足3点共线的. 思路: 一开始抱着试1试的态度,暴力了一个O(n^3),结果一如既往的超时了,然后又在刚刚超时 ...
- 【bzoj1597- [Usaco2008 Mar]土地购买】斜率优化
[597][Usaco2008 Mar]土地购买 [题目描述] 有N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000 ...
- 【CodeForces - 602D】Lipshitz Sequence(思维,单调栈,斜率单调性)
题干: A function is called Lipschitz continuous if there is a real constant Ksuch that the inequality ...
- 51nod《拉勾专业算法能力测评》测试有感
昨天在逛博客的过程中,发现一个有趣的网站,也就是51nod,在那里有很多算法马拉松,网站看起来也不错,至于题目的难度也是有一点的. 在逛的过程中,就发现了这个比赛,就点进去看了看. 看到图片的介绍就想 ...
- 51nod 1009 数字1的数量(数学)
题目描述: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 给定一个十进制正整数N,写下从1开始,到N的所有正数, ...
最新文章
- vue-ueditor 后端配置项没有正常加载_当运营商遇上极简流畅的产商品配置体验
- Android 抽屉效果Demo
- 陕西省2021年高考成绩结果查询,陕西招生考试信息网:2021年陕西高考成绩查询入口、查分系统...
- java的静态如何理解_java中的静态是什么?如何理解?
- c语言万能头文件用不,万能头文件不能用?
- 将 azw3 格式转换为 epub和mobi 格式
- 22fall 游戏/数字媒体/人机交互DIY留学申请经验贴
- wow插件入门资源整理
- PostgreSQL:“more than one owned sequence found“异常问题解决
- KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
- 倒计时2天:百度“文心一言”即将上线!
- #3、字符串转义字符
- Python备份CSDN博客
- 联想小新锐7000安装win10和ubuntu18.04双系统踩坑
- javascript学习1-变量和语句
- 智能家居app开发十大核心功能
- 在windows 10环境下安装 mujoco
- 【实用】JavaScript中Video使用详解过程(多视频列表循环播放)
- python:感知型对象和简单型对象
- c语言校友录系统,个人校友录管理系统下载
热门文章
- easyui datagrid java_EasyUI DataGrid 显示不了数据????
- 做系统ghost步骤图解_用好这工具,小孩都能会重装系统!
- dbnetlib sqlserver不存在或拒绝访问_SQL Server数据库损坏和修复
- C#:继承过程中的静态成员
- redis 超时失效key 的监听触发
- vb 垂直滚动条定位
- DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果
- 从线上慢sql看explain关键字
- Gateway Sentinel 做网关降级/流控,转发header和cookie
- Android 跳转到ViewPager指定页面