思路:
把所有點按橫座標排序;
開始分治(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...