hdu 1007(最小点对)
来源:互联网 发布:网络黑色项目暴力 编辑:程序博客网 时间:2024/05/20 14:19
题目链接:点击打开链接
分析:本题就是求解给出的点的最小点对。
代码如下:
#include <set>#include <map>#include <stack>#include <queue>#include <math.h>#include <vector>#include <string>#include <utility>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#include <functional>using namespace std;const double pi=acos(-1);const int maxn=100005;const int INF=0x3f3f3f;struct Point{ double x,y;}p[maxn],a[maxn],b[maxn];bool cmpx(Point a,Point b){ return a.x<b.x;}bool cmpy(Point a,Point b){ return a.y<b.y;}double Cross(Point a,Point b,Point c){ return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}double dot(Point a,Point b,Point c){ return (b.x-a.x)*(c.x-a.x)+(b.y-a.y)*(c.y-a.y);}double dis(Point a,Point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}Point cals(Point a,Point b,double r){ Point ans; ans.x=(a.x-b.x)*cos(r)-(a.y-b.y)*sin(r)+b.x; ans.y=(a.x-b.x)*sin(r)+(a.y-b.y)*cos(r)+b.y; return ans;}//旋转double solve(int s,int e){ if(s+1==e)return dis(a[s],a[e]); if(s+2==e)return min(dis(a[s],a[s+1]),min(dis(a[s+1],a[e]),dis(a[s],a[e]))); int mid=(s+e)>>1; double ans=min(solve(s,mid),solve(mid+1,e)); int cnt=0; for(int i=s;i<=e;i++){ if(a[i].x>=a[mid].x-ans&&a[i].x<=a[mid].x+ans) b[cnt++]=a[i]; } sort(b,b+cnt,cmpy); for(int i=0;i<cnt;i++){ for(int j=i+1;j<cnt;j++){ if(b[j].y-b[i].y>=ans) break; ans=min(ans,dis(b[j],b[i])); } } return ans;}int main(){ int n; while(scanf("%d",&n)!=EOF&&n){ for(int i=0;i<n;i++){ scanf("%lf%lf",&p[i].x,&p[i].y); a[i]=p[i]; } sort(a,a+n,cmpx); printf("%.2f\n",solve(0,n-1)/2); } return 0;}
0 0
- hdu 1007(最小点对)
- hdu 1007 最小点对
- HDU-1007 Quoit Design 最小距离点对
- HDU 1007 Quoit Design 最小点对基础模板
- 分治——最小点对(HDU 1007)
- hdu 1007 Quoit Design [sort+分治] 寻找最小距离点对
- hdu1007最小点对
- HDU1007--最小点对
- hdu 1007最近点对
- hdu 1007最近点对
- HDU-1007 最近点对
- hdu 1007最近点对
- HDU 1007 最近点对
- hdu 1007最近点对
- hdu 1007(最近点对)
- (hdu 7.1.8)Quoit Design(最小点对——在n个点中,找到两个点间的最小距离)
- HDU1007Quoit Design(最小点对)
- HDU 1007 (最近点对问题)
- 使用PHPMailer发送带附件并支持HTML内容的邮件
- 细线表格样式
- Java虚拟机概念模型学习
- sorted()函数 在Python2.x 和 Python3.x 中有所不同
- c++第6次上机实验
- hdu 1007(最小点对)
- IO(三) 文件切割合并,Properties的使用
- 【App小应用】ZipFiles 解压缩zip文件
- 解决苹果手机按钮的圆角问题
- 聚集索引和非聚集索引的区别有哪些
- 安卓绘制
- 请求的资源不支持 http 方法“GET” 解决
- pentaho6.0 源码的编译本人已经成功了
- 数据链路层