题解:点击

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <math.h>
  6. using namespace std;
  7. const double eps = 1e-6;
  8. const int MAXN = 100010;
  9. const double INF = 1e20;
  10. struct Point
  11. {
  12. double x,y;
  13. };
  14. double dist(Point a,Point b)
  15. {
  16. return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
  17. }
  18. Point p[MAXN];
  19. Point tmpt[MAXN];
  20. bool cmpxy(Point a,Point b)
  21. {
  22. if(a.x != b.x)return a.x < b.x;
  23. else return a.y < b.y;
  24. }
  25. bool cmpy(Point a,Point b)
  26. {
  27. return a.y < b.y;
  28. }
  29. double Closest_Pair(int left,int right)
  30. {
  31. double d = INF;
  32. if(left == right)return d;
  33. if(left + 1 == right)
  34. return dist(p[left],p[right]);
  35. int mid = (left+right)/2;
  36. double d1 = Closest_Pair(left,mid);
  37. double d2 = Closest_Pair(mid+1,right);
  38. d = min(d1,d2);
  39. int k = 0;
  40. for(int i = left;i <= right;i++)
  41. {
  42. if(fabs(p[mid].x - p[i].x) <= d)
  43. tmpt[k++] = p[i];
  44. }
  45. sort(tmpt,tmpt+k,cmpy);
  46. for(int i = 0;i <k;i++)
  47. {
  48. for(int j = i+1;j < k && tmpt[j].y - tmpt[i].y < d;j++)
  49. {
  50. d = min(d,dist(tmpt[i],tmpt[j]));
  51. }
  52. }
  53. return d;
  54. }
  55. int main()
  56. {
  57. int n;
  58. while(scanf("%d",&n)==1 && n)
  59. {
  60. for(int i = 0;i < n;i++)
  61. scanf("%lf%lf",&p[i].x,&p[i].y);
  62. sort(p,p+n,cmpxy);
  63. printf("%.2lf\n",Closest_Pair(0,n-1)/2);
  64. }
  65. return 0;
  66. }

平面最近点对(HDU 1007)的更多相关文章

  1. hdu 1007 Quoit Design(平面最近点对)

    题意:求平面最近点对之间的距离 解:首先可以想到枚举的方法,枚举i,枚举j算点i和点j之间的距离,时间复杂度O(n2). 如果采用分治的思想,如果我们知道左半边点对答案d1,和右半边点的答案d2,如何 ...

  2. HDU 1007 Quoit Design【计算几何/分治/最近点对】

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. 【HDU 1007】 Quoit Design

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1007 [算法] 答案为平面最近点对距离除以2 [代码] #include <algorith ...

  4. kd树解平面最近点对

    早上起来头有点疼,突然就想到能不能用kd树解平面最近点对问题,就找了道题试了一下,结果可以,虽然效率不高,但还是AC了~ 题目链接:http://acm.hdu.edu.cn/showproblem. ...

  5. HDU-4631 Sad Love Story 平面最近点对

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631 数据是随机的,没有极端数据,所以可以分段考虑,最小值是一个单调不增的函数,然后每次分治算平面最近 ...

  6. HDU 1007 Quoit Design

    传送门 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  7. 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点

    平面最近点对,即平面中距离最近的两点 分治算法: int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对 { double ans; //an ...

  8. HDU 1007 Quoit Design(二分+浮点数精度控制)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  9. HDU1007--Quoit Design(平面最近点对)

    Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...

  10. Vijos 1012 清帝之惑之雍正 平面最近点对(分治)

    背景 雍正帝胤祯,生于康熙十七年(1678)是康熙的第四子.康熙61年,45岁的胤祯继承帝位,在位13年,死于圆明园.庙号世宗. 胤祯是在康乾盛世前期--康熙末年社会出现停滞的形式下登上历史舞台的.复 ...

随机推荐

  1. H5面试题整理

    1.新的HTML5文档类型和字符集是? 文档类型:<!doctype html> 使用UTF-8编码示例:<meta charset="UTF-8"> 2. ...

  2. Openresty最佳案例 | 第2篇:Lua入门

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616622 本文出自方志朋的博客 什么是lua Lua 是一种轻量小巧的脚本语言,用标准 ...

  3. oracle-sql脚本导出EXCEL数据

    在数据库中,经常有业务人员提出需求导出数据库中的业务数据,而且是每天.每周或每月定时导出.为了方便,可将sql查询的脚本 通过下面脚本来导出EXCEL数据. 1.将查询sql脚本(AAA.sql)放到 ...

  4. c++后台开发 准备材料

    后台开发知识点 面面俱到很难,一个领域钻研的很深也很难.我认识的大神里有把C++语言吃的非常透的,也有实验室就是搞分布式的,拿offer都非常轻松. 博客(C++后台/基础架构) http://www ...

  5. tidb损坏tikv节点怎么恢复集群

    tikv节点宕机(机器再起不来),或者数据节点被rm -rf 掉了怎么办 正常情况下tikv节点down掉了.此时不要去执行store delete  store_id .数据一般可以正常访问,但是如 ...

  6. docker安装MySQL 8.0及初始化错误处理

      Preface          Several days ago,I've implement a docker environmnet,I'm gonna Install a MySQL 8. ...

  7. centos7 openvpn代理搭建

    系统环境:centos7.1 拨号ip地址:125.112.194.40(公网) server端部署 一.准备工作 1.检查SELinux状态,关闭 sed -i 's/enforcing/disab ...

  8. STM32Cube 5.0 使用V1.7.0的固件库生成keil5环境下的F1工程时发现问题

    生成的stm32f1xx_hal_msp.c文件里面,HAL_MspInit(void)函数居然没有了之前1.6库里面的系统中断优先级的设置: /* MemoryManagement_IRQn int ...

  9. ADB工具的安装

    1.Windows ADB工具下载地址: https://developer.android.google.cn/studio/releases/platform-tools ADB工具官网教程: h ...

  10. Android Stadio 指定文件打开类型

    我们项目里面,有一个文件,叫做aaa.meta. 这个只是一个配置文件,里面是txt. 但是Android Stadio 不识别.怎么办? 设置如下图: 首先,打开Android stadio 的设置 ...