POJ 1113 Wall 思維 計算幾何 數學

2022-04-29 21:42:17 字數 846 閱讀 7473

題目鏈結

給出平面上n個點的座標。你需要建乙個圍牆,把所有的點圍在裡面,且圍牆距所有點的距離不小於l。求圍牆的最小長度。

\(n \leqslant 10^5\)

首先考慮如果沒有l的限制,那麼顯然就是凸包的長度。

現在了距離的限制,那麼顯然原來建在凸包上的圍牆要向外移動\(l\)的距離,同時會增加一些沒有圍住的位置

因為多邊形的外交和為360,再根據補角的性質,畫一畫圖就知道這一塊是乙個半徑為\(l\)的圓。

因為總答案為凸包周長 + \(2 \pi l\)

#include#include#includeusing namespace std;

const int maxn = 1e5 + 10;

inline int read()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int n, top;

struct point ;

} point operator + (const point &rhs) const ;

} double operator ^ (const point &rhs) const

bool operator < (const point &rhs) const

}p[maxn], q[maxn];

templatea sqr(a x)

double dis(point a, point b)

void insert(point now)

int main()

計算幾何 poj1113 Wall

進行凸包掃瞄並求面積即可。include include include includeusing namespace std struct point int cmp const void elem1 const void elem2 void add point a,int k double d...

POJ 1113 Wall 凸包 思維

1.題意 給出n個點,讓你建立一圈圍牆,將n個點圍起來並且,每個點距離圍牆都 l,讓求在這個條件下的最小圍牆周長 2.分析 最小周長,首先想到凸包,但是這裡有個距離問題 我們最初想的,凸包周長整體外擴l 但是我們發現,每個凸包頂點,到圍牆頂點的距離 l,浪費了一部分 如果走這段弧長,假設有n個頂點,...

POJ 1113 Wall 凸包 一點思維

現在有n個點,要求在n個點外面建柵欄,要求每個點到柵欄的距離都大於等於l,問需要的最短柵欄長度。需要柵欄將n個點包圍,第一反應可以想到凸包,然後再在凸包外面加柵欄。由於柵欄距離凸包的距離要大於l,因此我們思考如何加柵欄。對於凸包的每個頂點,向連線頂點的兩條線段建立垂線,長度為l,其餘地方連成直線。可...