UVA 10245 平面分治

2022-06-30 05:30:17 字數 659 閱讀 8265

一道平面分治的板子題(做之前剛學會平面分治,太菜了)

把所有點按照x排序後,分成左半邊的最近距離和右半邊的最近距離,再以中點為圓心,目前的最近距離為半徑,做這個圓內的列舉,求最短距離。

注意:sqrt()裡面的數如果是int型別會比double型別慢,如果次數多了會t

**如下:

1 #include2

using

namespace

std;

3struct

nodea[10005];6

bool cmp(node& a, node&b)

9double dis(int i,int

j)12

double erfen(int l,int

r)23}24

return

d;25}26

intmain()

33 sort(a+1,a+1+n,cmp);

34double ret=erfen(1

,n);

35if (ret>10000) printf("

infinity\n");

36else printf("

%.4f\n

",ret);37}

38 }

view code

最近點對問題 UVa 10245 (分治)

給定平面上的n個點,求距離最近的兩個點的距離。限制條件 1 n 10000 思路 假設我們把所有點按x座標分成了左右兩半,那麼最近點對的距離就是下面二者的最小值 1 2點p和q同屬於左半邊或右半邊時點對 p,q 的距離 2 2點p和q屬於不同區域時點對 p,q 的距離 首先,對於 1 可以通過遞迴計...

分治入門 平面分治

分治思想 劃分子問題,解決子問題,合併子問題 題目 uva 10245 題意 在乙個二維平面內給定n個點,求最近的兩個點的距離。n 10000 題解 直接暴力列舉所有點是肯定行不通的。那麼基於分治的思想 按照橫座標排序後,分成兩個部分,那麼最近距離的點對就是以下的情況 1 兩個點均屬於乙個區域 2 ...

模板 平面最近點對 分治

傳送門 洛谷 平面最近點對 給定平面上n個點,找出其中的一對點的距離,使得在這n個點的所有點對中,該距離為所有點對中最小的。2 n 200000 一 分治 按x排序,左右分治,邊界處理一下就好了。include include include include include define db do...