HDU 1007 Quoit Design_二分法求最近点对
来源:互联网 发布:贪玩蓝月光翼升级数据 编辑:程序博客网 时间:2024/06/05 15:09
题目:~click here~
具体推导过程见王晓东《计算机算法设计与分析》第四版29页,一大堆图,公式,我就不抄上来了。
#include<iostream>#include<cmath>#include<algorithm>using namespace std;int n;struct node{ double x; double y;}p[100005];int a[100005];double cmpx(node a,node b){ return a.x<b.x;}double cmpy(int a,int b){ return p[a].y<p[b].y;}double min(double a,double b){ return a<b?a:b;}double dis(node a,node b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}double find(int l,int r){ if(r==l+1) return dis(p[l],p[r]); if(l+2==r) return min(dis(p[l],p[r]),min(dis(p[l],p[l+1]),dis(p[l+1],p[r]))); int mid=(l+r)>>1; double ans=min(find(l,mid),find(mid+1,r)); int i,j,cnt=0; for(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(i=0;i<cnt;i++) { for(j=i+1;j<cnt;j++) { if(p[a[j]].y-p[a[i]].y>=ans) break; ans=min(ans,dis(p[a[i]],p[a[j]])); } } return ans;}int main(){ int i; while(scanf("%d",&n)!=EOF) { if(!n) break; for(i=0;i<n;i++) scanf("%lf %lf",&p[i].x,&p[i].y); sort(p,p+n,cmpx); printf("%.2lf%\n",find(0,n-1)/2); } return 0;}
0 0
- HDU 1007 Quoit Design_二分法求最近点对
- hdu 1007 Quoit Design(分治法求最近点对)
- hdu 1007 Quoit Design(分治求最近点对)
- HDU 1007 Quoit Design 分治法求最近点对
- 【分治 求最近点对】hdu 1007 Quoit Design
- hdu 1007 Quoit Design 最近点对
- hdu 1007 Quoit Design 最近点对
- hdu 1007 Quoit Design (最近点对)
- HDU 1007 Quoit Design 最近点对
- hdu 1007 Quoit Design(最近点对)
- hdu 1007 Quoit Design (最近点对)
- Hdu 1007 Quoit Design【最近点对】
- hdu 1007 zoj 2107 Quoit Design 求平面最近点对 分治法
- HDU ACM 1007 Quoit Design 分治法求最近点对
- HDU 1007 Quoit Design(分治法求最近点对问题)
- 【转载】-HDU 1007 hdu 1007 Quoit Design (最近点对)
- (hdu1007)Quoit Design,求最近点对
- hdu 1007 Quoit Design (最近点对、分治)
- python数据结构与算法 24 汉诺塔问题(河内塔问题)
- Cocos2d-x 多分辨率适配完全解析
- Spring旅程(四) AOP--Spring AOP实例
- 读取数据库里的信息显示在Label里换行问题
- Linux命令:usermod命令详解!
- HDU 1007 Quoit Design_二分法求最近点对
- c++关于引用和const的一些问题
- 微信公众平台 服务中心 有哪些东西?
- 数据结构之单链表
- SQLite数据库浏览工具试用体验
- Fibonacci数列
- 锐捷面试
- Linux文件系统中的inode索引结点 VFS inode
- dbms_job vs Oracle Scheduler