pku 2187 最遠點對,旋轉卡殼

2022-08-22 06:51:14 字數 897 閱讀 3195

1 #include 2 #include 3 #include 4

5using

namespace

std;67

const

int n = 50005;8

9//旋轉卡殼(變化)求凸包直徑o(n)

10struct

point p[n];

1314

intdis(point a, point b)

1718

intcrossprod(point a, point b, point c)

2122

int cmp(const

void *a, const

void *b)

2930

//計算凸包,輸入點集p,點的個數n,輸出凸包的頂點個數

31int graham(point *p, int

n) 41

}42 point tmp = p[0

];43 p[0] =p[mi];

44 p[mi] =tmp;

45 qsort(p+1, n-1, sizeof

(point), cmp);

46int top = 1;47

for (int i=2; ii)

51return top + 1;52

}5354//

計算凸包直徑,輸入凸包ch,頂點個數為n,按逆時針排列,輸出直徑的平方

55int rotating_calipers(point *ch, int

n) 62

return

ans;63}

6465

intmain()

73return0;

74 }

POJ2187 旋轉卡殼求平面最遠點對

分類 計算幾何 2013 02 12 15 23 62人閱讀收藏 舉報旋轉卡殼可以用於求凸包的直徑 寬度,兩個不相交凸包間的最大距離和最小距離等。深度學習旋轉卡殼這裡 題目 beauty contest cpp view plain copy include include include usin...

poj 2187 旋轉卡殼(平面上最遠點對)

題意 給定二維平面上不超過50000個點,求最遠點對距離的平方。思路 由資料量來判斷直接列舉會超時。注意到最遠距離點對必出現在這些點的凸包上,所以可以先求出凸包,然後在凸包上列舉。此法的最壞情況複雜度仍然是n 2的,但是可以ac這道題了。在複雜度意義下的優化是旋轉卡殼 參考 如果qa,qb是凸包上最...

尋找最遠點對

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