51nod 1100 斜率最大
2015-11-18 18:45
232 查看
平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。
(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等)
Input
Output
Input示例
Output示例
斜率最大的两个点,一定相邻,可以画图证明。。。。
(点的编号为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
斜率最大的两个点,一定相邻,可以画图证明。。。。
#include<bits/stdc++.h> using namespace std; const int maxn=1e4+10; struct node { int x; int y; int index; }a[maxn]; struct node1 { int s; int e; double k; int x; }b[maxn]; bool cmp1(node t1,node t2) { if(t1.x<t2.x) return true; else if(t1.x==t2.x&&t1.y>t2.y) return true; return false; } bool cmp2(node1 t1,node1 t2) { if(t1.k>t2.k) return true; else if(t1.k==t2.k && t1.x<t2.x) return true; return false; } double fun(node t1,node t2) { double k; k=(double) (t2.y-t1.y)/(t2.x-t1.x); return k; } int main() { int n,i,j,k; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d%d",&a[i].x,&a[i].y); a[i].index=i; } sort(a+1,a+1+n,cmp1); k=0; for(i=2;i<=n;i++) { b[k].x=a[i-1].x; b[k].s=a[i-1].index; b[k].e=a[i].index; b[k].k=fun(a[i-1],a[i]); k++; } sort(b,b+k,cmp2); printf("%d %d\n",b[0].s,b[0].e); for(i=1;i<=n;i++) { if(b[i].k==b[i-1].k) printf("%d %d\n",b[1].s,b[1].e); else break; } return 0; }
相关文章推荐
- 多层下拉框
- MongoDB小结20 - find【查询条件$size】
- 对进程、线程、应用程序域的理解
- lvs DR模式下vip的端口无法telnet
- BZOJ4300: 绝世好题
- 【Python】Python的数据分析(四)——数据及绘图
- Intel Threading Building Blocks 编程指南:原子操作
- Intel Threading Building Blocks 编程指南:互斥
- MongoDB小结19 - find【查询条件$all】
- clojure实现java类
- Android中调用c函数来打印log---(JNI)
- python做“大数据网页链接+标题爬取”
- 分享5个实用的Web界面开发框架
- 字符串加解密
- 【Python】Python的数据分析(三)——数据文件及数据结构
- Java 8特性探究(2):深入解析默认方法
- do...while(0)在宏定义中的巧妙用法
- 版本信息获取类
- linux
- android控件的绘制过程