AcWing 119襲擊 平面點間對問題

2021-09-25 13:31:17 字數 784 閱讀 7777

思路:

把所有點按橫座標排序;

開始分治(l,r);

遞迴到(l,r)上只有乙個點,或者有倆個點;

找到中間點的橫座標,找到遞迴時最小間間距res;

找到橫座標屬於min_x-res 到 min_x+res 的點 放到temp陣列中;

將temp陣列按找y值排序;

用暴力找到既屬於以邊長為res的正方形內 的倆個點,取最小值

#include#include#include#includeusing namespace std;

//把所有點按橫座標排序,分治 ,,把屬於範圍的點找出來,按縱座標排序

int n;

const int inf=1e9+1999;

const int n=100100;

struct nodepoint[n],temp[n];

int cmp1(node px,node py)

}sort(temp+1,temp+1+cnt,cmp2);

for(int i=1;i=point[i].y+res) break;

res=min(res,dis(i,j));}}

return res;

}int main()

for(int i=n+1;i<=2*n;i++)

n<<=1;

sort(point+1,point+1+n,cmp1);

printf("%.3f\n",dfs(1,n));

}return 0;

}

AcWing 119 襲擊 平面最近點對

經典問題,平面最近點對,使用分治來解決 把所有點按橫座標排序,分治求解距離 合併時將兩邊的最近點對距離也比較一下 屬於不同集合的點比較距離時判斷一下即可 include include include include include include includeusing namespace st...

學習筆記 1 19

abstract 關鍵字 可以修飾類和方法。抽象類 包含抽象方法和構造器,在開發中,會提供抽象類的子類,讓子類例項化。抽象方法 只有方法宣告,沒有方法體。若子類沒有實現父類所有的抽象方法,那麼這個子類也屬於抽象類。模版方法設計模式 抽象類的應用 模版方法的設計模式 public class temp...

119 開始學習CMD

平時都會用到,所以學習下沒有壞處,但是一直沒有找到系統的學習方法,所以自己就零零散散地記錄下,以便自己以後查閱!輸入 cd.可以返回到父資料夾 注 我猜 cd 的全稱應該是 change directory 就是 改變目錄 的意思!注 cd 或是 cd 都是返回根目錄的命令!輸入 cd d f de...