題目大意
有兩個集合,集合點都是n個,求兩個集合中最近的點對是多少
解題思路
就是分治求最近點對的板子題;
用id標一下是哪個集合的點,只有分別是連個集合的才能求最近距離,不然就是inf
不知道為啥,這個題用vector超時了,最後用的結構體(qaq)
#include
#include
#include
#include
#include
using namespace std;
const
int n=
2e5+5;
struct node
node (
long
long x,
long
long y,
int id)};
node e[n*2]
,k[n*2]
;int n;
long
long inf=
1000000000
;int
cmpx
(node a,node b)
intcmpy
(node a,node b)
double
dis(node a,node b)
double
half
(int l,
int r)
sort
(k,k+cnt,cmpy)
;for
(int i=
0; i}return ans;}}
intmain()
for(
int i=
1; i<=n; i++
)sort
(e+1
,e+1
+n*2
,cmpx)
;printf
("%.3f\n"
,half(1
,2*n));}
return0;
}
poj 3714 分治法求最近點對
題意 在乙個平面上給定兩種點a類和b類的座標,求a類中某點a和b類中某點b的最近距離。思路 和同一類點幾乎相同,只需手工設定同一類點間距離為無窮即可 或者每次比較時判斷一下亦可 方法就是經典的分治法 按x排序一分為二,先遞迴判斷兩邊的最近距離,然後判斷中間的 豎帶 上的最近點距。判斷中間豎帶時按照y...
最近點對問題 UVa 10245 (分治)
給定平面上的n個點,求距離最近的兩個點的距離。限制條件 1 n 10000 思路 假設我們把所有點按x座標分成了左右兩半,那麼最近點對的距離就是下面二者的最小值 1 2點p和q同屬於左半邊或右半邊時點對 p,q 的距離 2 2點p和q屬於不同區域時點對 p,q 的距離 首先,對於 1 可以通過遞迴計...
POJ 3714 最近點對問題 分治法
題意 station和agent分別有n 1 n 100000 個點,求不同類別的最近點對距離。題解 這裡講的很好。include include include include include define max a b a b a b define min a b a b a b define...