平面上最近点对
http://ccpc.ahu.edu.cn:8080/OJ/Problem.aspx?id=862
分治思想, 核心是分治算法
分别根据点的 x,y 值进行排序
在 x 轴上划一道垂线, 将点均分成两半
假设最近点对都在左/右部分, 递归计算左/右半部分的最短距离
并返回较小值 dis假设最近点对分别在左右两个部分, 横跨中心的竖线. 中心线为中心,
2*dis 为宽度画一个矩形, 横跨中心线的最近点对 candidate 都在这个矩形内.
将这些点按照 y 值的大小加入到数组中. 遍历数组中的点, 将该点与其后的
7 个点计算距离, 返回最小距离为什么仅和 7 个点作对比呢. 因为已经假设 dis 是左右不分最近点对的最小值,
这就说明在一个长(宽)为 dis 的正方形内, 至多有 4 个点. 长为 dis*2,
宽为 dis 的长方形至多 8 个.
#include <cstdio>
#include <iostream>
#include <cstring>
#include<cmath>
#include &l