POJ 3714 最近點對問題 分治法

2021-06-10 08:13:28 字數 583 閱讀 4585

題意: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 abs(x) ((x) >= 0 ? (x) : (-(x)))

using namespace std;

const double inf = 1e50;

const int maxn = 100002;

struct p

po[maxn << 1];

int middle[maxn << 1];

int n;

bool cmpx(p a,p b)

bool cmpy(int a,int b)

void read()

}sort(middle , middle + top , cmpy);

for(int i=0;i

poj 3714 平面最近點對

解題思路 在原有的分治演算法上加上標記,如果標記不同的則計算距離,不然的話就返回無窮大.用歸併排序再可以省下logn 這題要是卡資料不知道有什麼更高深的辦法.include include include include include using namespace std const int m...

POJ 3714 平面最近點對

題意 分為兩種點,求兩種點之間的平面最近點對 題解 分治法。這個怎麼暴力分治都能過。吐槽 我用了g tle wa,毛線。view code 1 include 2 include 3 include 4 include 5 include 6 include 7 8 define n 222222 ...

poj 3714 分治法求最近點對

題意 在乙個平面上給定兩種點a類和b類的座標,求a類中某點a和b類中某點b的最近距離。思路 和同一類點幾乎相同,只需手工設定同一類點間距離為無窮即可 或者每次比較時判斷一下亦可 方法就是經典的分治法 按x排序一分為二,先遞迴判斷兩邊的最近距離,然後判斷中間的 豎帶 上的最近點距。判斷中間豎帶時按照y...