最近 最遠點對

2021-07-30 04:15:49 字數 1072 閱讀 3618

hdu 1589 stars couple(計算幾何求二維平面的最近點對和最遠點對)

最遠點對相當於求凸包中最遠的兩個點(先求凸包,然後n*n列舉)

最近點對 二分

#include#include#include#includeusing namespace std;

const int m=50005;

typedef struct point

point;

point p[m];

point pp[m];

bool bo[m];

int stack[m];//form 1 to t;

double dis(point a,point b)

bool cmp(point a,point b)

n=t;

t=0;

memset(bo+1,true,n*sizeof(bo[0]));

if(n>0)

if(n>1)

if(n>2)

else

stack[++t]=i;

bo[stack[t]]=false;

}for(i=n;i>=1;i--)

if(bo[i]&&xdet(p[stack[t-1]],p[stack[t]],p[i])>=0)

else

stack[++t]=i;

bo[stack[t]]=false;

}t--;

}for(i=1;i<=t;i++)

pp[i]=p[stack[i]];

memcpy(p+1,pp+1,t*sizeof(point));

n=t;

}int n,o[m],on;

int dcmp(double a,double b)

bool cmp1(const point &a,point &b)

bool cmp2(const int&a,const int&b)

double min(double a,double b)

int main()

return 0;

}

尋找最遠點對

問題 給定平面上n個點的座標,找出距離最遠的兩個點。分析類似於 最近點對問題 這個問題也可以用列舉的方法求解,時間複雜度o n 2 尋找最近點對 是用到分治策略降低複雜度,而 尋找最遠點對 可利用幾何性質。注意到 對於平面上有n個點,這一對最遠點必然存在於這n個點所構成的乙個凸包上 證明略 那麼可以...

尋找最遠點對

在乙個實際專案中遇到 尋找最遠點對 問題,猛然想起 程式設計之美 擴充套件問題提到過,開心地翻出來看,卻發現 最近點對 的思路套 最遠 貌似不合適。然後開始查文獻 做實驗,改進演算法,困擾半天也發現了不少實際問題,寫出來大家參考。最後,演算法用到系統中,雖然沒有大幅提高遺傳演算法效率,但是系統評價功...

尋找最遠點對

問題 給定平面上n個點的座標,找出距離最遠的兩個點。分析類似於 最近點對問題 這個問題也可以用列舉的方法求解,時間複雜度o n 2 尋找最近點對 是用到分治策略降低複雜度,而 尋找最遠點對 可利用幾何性質。注意到 對於平面上有n個點,這一對最遠點必然存在於這n個點所構成的乙個凸包上 證明略 那麼可以...