題意:在乙個平面上給定兩種點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 ...