hdu 1007最近点对
来源:互联网 发布:sql查询字段长度限制 编辑:程序博客网 时间:2024/05/22 11:11
#include<cstdio>#include<cstring>#include <cstdlib>#include <algorithm>#include <iostream>#include <cmath>#define M 100010using namespace std;int n;struct point{ double x,y;}p[M];int a[M];double cmp(point aa,point bb){ return aa.x<bb.x;}double cmpy(int a,int b){ return p[a].y<p[b].y;}double dis(point aa,point bb){ return sqrt((aa.x-bb.x)*(aa.x-bb.x)+(aa.y-bb.y)*(aa.y-bb.y));}double find(int l,int r)//分治法{ if(l+1==r) return dis(p[l],p[r]); else if(l+2==r) return min(dis(p[l],p[l+1]),min(dis(p[l],p[r]),dis(p[l+1],p[r]))); int mid=(l+r)>>1; double ans=min(find(l,mid),find(mid+1,r));//先在左右两个区间求最小值 int cnt=0;//再比较左右各占一个时的情况 for(int i=l; i<=r; i++) if(p[i].x>=p[mid].x-ans&&p[i].x<=p[mid].x+ans) a[cnt++]=i; sort(a,a+cnt,cmpy); for(int i=0; i<cnt; i++) { for(int j=i+1; j<cnt; j++) { if(p[a[j]].y-p[a[i]].y>=ans)break; ans=min(ans,dis(p[a[j]],p[a[i]])); } } return ans;}int main(){ while(scanf("%d",&n)==1&&n) { for(int i=0; i<n; i++) scanf("%lf%lf",&p[i].x,&p[i].y); sort(p,p+n,cmp); printf("%.2lf\n",find(0,n-1)/2); } return 0;}
0 0
- hdu 1007最近点对
- hdu 1007最近点对
- HDU-1007 最近点对
- hdu 1007最近点对
- HDU 1007 最近点对
- hdu 1007最近点对
- hdu 1007(最近点对)
- HDU 1007 (最近点对问题)
- hdu 1007 (空间最近点对)
- ZOJ 2107 HDU 1007 最近点对
- hdu 1007 求最近点对
- hdu 1007 寻找最近点对
- hdu 1007 Quoit Design 最近点对
- hdu 1007 求最近点对
- hdu 1007 Quoit Design 最近点对
- hdu 1007 Quoit Design (最近点对)
- HDU 1007 Quoit Design 最近点对
- hdu 1007 Quoit Design(最近点对)
- findstr()与strfind()的区别
- CSS学习笔记二(W3CSchool)
- 黑马程序员--异常处理知识点总结
- 局部变量和全局变量在内存中的存储位置
- 从人人网“死亡”看“级联”效应
- hdu 1007最近点对
- Linux服务器安装jdk和tomcat
- hdu 1285(拓扑排序)
- 第十一周 项目一 存储班长信息的学生类(1)
- HDU 1.2.5 GPA(ACM step)
- DAG模型简单题
- Pow(x, n) - LeetCode 50
- 第十一周 阅读程序4 类的继承构造函数与析构函数调用的先后顺序
- uva465 overflow