poj 3714 分治法求最近點對

2021-06-28 23:53:26 字數 681 閱讀 4819

題意:在乙個平面上給定兩種點a類和b類的座標,求a類中某點a和b類中某點b的最近距離。

思路:和同一類點幾乎相同,只需手工設定同一類點間距離為無窮即可(或者每次比較時判斷一下亦可)。方法就是經典的分治法:按x排序一分為二,先遞迴判斷兩邊的最近距離,然後判斷中間的「豎帶」上的最近點距。判斷中間豎帶時按照y排序,而且只要向前判斷7個點即可。

#include #include #include #include #define inf 0x3fffffff

#define min(a,b) ((a)<(b)?(a):(b))

#define n 100005

struct nodes[n<<1],t[n<<1];

int t,n;

int cmp(const void* a,const void* b)

int cmp2(const void* a,const void* b)

double dis(struct node a,struct node b)

double test(int a,int b)

double dq(int a,int b)

int main(){

scanf("%d",&t);

while(t--){

int i;

scanf("%d",&n);

for(i = 0;i

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...

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 ...