洛谷 1429 平面最近点对 贪心? 解题报告
来源:互联网 发布:cs.js.cn 编辑:程序博客网 时间:2024/06/08 19:22
题目描述
给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的
输入输出格式
输入格式:
第一行:n;2≤n≤200000
接下来n行:每行两个实数:x y,表示一个点的行坐标和列坐标,中间用一个空格隔开。
输出格式:
仅一行,一个实数,表示最短距离,精确到小数点后面4位。
输入输出样例
输入样例#1: 复制
3
1 1
1 2
2 2
输出样例#1:
1.0000
说明
0<=x,y<=10^9
思路
我贪心的??
排序x与y然后暴力找
数据水???
代码
#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int N=200000+5;const int inf=0x3f3f3f3f;int n;double ans=inf;struct data{ int x,y;}point[N];double cal(int x1,int y1,int x2,int y2){return sqrt(pow((double)(x1-x2),2)+pow((double)(y1-y2),2));}inline bool cmp1(data a,data b){return a.x<b.x;}inline bool cmp2(data a,data b){return a.y<b.y;}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d",&point[i].x,&point[i].y); sort(point+1,point+n+1,cmp1); for (int i=1;i<n;i++) ans=min(ans,cal(point[i].x,point[i].y,point[i+1].x,point[i+1].y)); sort(point+1,point+n+1,cmp2); for (int i=1;i<n;i++) ans=min(ans,cal(point[i].x,point[i].y,point[i+1].x,point[i+1].y)); printf("%.4lf",ans); return 0;}
阅读全文
0 0
- 洛谷 1429 平面最近点对 贪心? 解题报告
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对
- 平面最近点对 转载
- hdu1007 平面最近点对
- POJ_3714_Raid(平面最近点对)
- 平面最近距离点对
- 平面上最近点对
- 平面最近点对问题
- HDU1007 平面最近点对
- luogu 1429 平面最近点对(加强版)
- Android自定义控件---刻度尺与时间轴(刻度尺对应时间戳)
- 学生信息管理系统之第三篇登录界面java代码
- Java安全管理器和API,写给想学又没时间看的人
- Android客制化------Android开机动画制作文档
- 蓝桥杯 基础练习 十六进制转十进制
- 洛谷 1429 平面最近点对 贪心? 解题报告
- 怎么用IntelliJ IDEA创建java程序
- python中使用input函数报错
- jquery表单对象属性过滤器
- java基础复习二:HashMap存放数据
- 理解数据库中的事务
- ios面试
- postgreSql字段扩容
- webpack学习之路