ZOJ 2107 HDU 1007 Quoit Design(最近点对)
来源:互联网 发布:1元域名注册 编辑:程序博客网 时间:2024/06/10 16:43
最近点对的裸题
利用分治去搞搞即可
代码:
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int N = 100005;struct Point { double x, y; void read() { scanf("%lf%lf", &x, &y); }};bool cmpx(Point a, Point b) { return a.x < b.x;}bool cmpy(Point a, Point b) { return a.y < b.y;}double dis(Point a, Point b) { double dx = a.x - b.x; double dy = a.y - b.y; return sqrt(dx * dx + dy * dy);}int n;Point p[N], tmp[N];int tn;double gao(double ans) { sort(tmp, tmp + tn, cmpy); for (int i = 0; i < tn; i++) { for(int j = i + 1; j < tn && tmp[j].y - tmp[i].y < ans; j++) { ans = min(ans, dis(tmp[i], tmp[j])); } } return ans;}double ClosePoint(int l, int r) { if (r - l + 1 <= 3) { tn = 0; for (int i = l; i <= r; i++) tmp[tn++] = p[i]; return gao(1e20); } int mid = (l + r)>>1; double s = min(ClosePoint(l, mid), ClosePoint(mid + 1, r)); tn = 0; for (int i = l; i <= r; i++) { if (fabs(p[i].x - p[mid].x) < s) tmp[tn++] = p[i]; } return gao(s);}int main() { while (~scanf("%d", &n) && n) { for (int i = 0; i < n; i++) p[i].read(); sort(p, p + n, cmpx); printf("%.2f\n", ClosePoint(0, n - 1) / 2); } return 0;}
0 0
- hdu 1007 && zoj 2107 Quoit Design [最近点对]
- ZOJ 2107 HDU 1007 Quoit Design(最近点对)
- zoj 2107 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 求平面最近点对 分治法
- zoj 2107 Quoit Design(平面最近点对)
- zoj 2107 Quoit Design(最近点对)
- 【转载】-HDU 1007 hdu 1007 Quoit Design (最近点对)
- hdu 1007 Quoit Design (最近点对、分治)
- hdu 1007 Quoit Design(平面最近点对)
- Hdu 1007 - Quoit Design//分治,最近点对,计算几何
- hdu 1007 Quoit Design(最近点对模板)
- Lisp学习5
- Mac OS X Yosemite安装Hadoop 2.6记录
- C++开源项目
- hdu4549---M斐波那契数列(矩阵+欧拉定理)
- c++ string 类基本用法
- ZOJ 2107 HDU 1007 Quoit Design(最近点对)
- 场景loadiing
- 机器学习中的数学(2)-线性回归,偏差、方差权衡
- hdu 4374 单调队列
- C/C++程序员必须熟练应用的开源项目
- poj 2513 Colored Sticks(涂有颜色的木棍)
- android系统之apn相关
- Linux 相关目录介绍
- MyBatis使用Map批量插入数据的一个例子