Codevs 1298 凸包周長

2021-07-26 03:43:53 字數 1380 閱讀 9110

1298 凸包周長

時間限制: 1 s

空間限制: 128000 kb

題目等級 :鑽石 diamond

題目描述 description

給出平面上n個點,求出這n個點形成的凸包的周長。

凸包的定義:能覆蓋住這個n個點的最小凸多邊形。

輸入描述 input description

第一行乙個整數n,接下來n行,每行兩個整數x和y,表示乙個點的座標。

資料範圍 1 <= n <= 100000

-10000<=x,y<=10000

輸出描述 output description

一行乙個實數,表示凸包周長,保留一位小數.

樣例輸入 sample input

5 0 0

2 2

0 2

2 0

1 1

樣例輸出 sample output

8.0

資料範圍及提示 data size & hint

無 分類標籤 tags

計算幾何

/*

計算幾何第二題留念flag.

jarvis o(nm)(m為凸包上的點的個數)

從最下面的一坨點找乙個最左邊的點.

然後以向右為基準掃瞄.

用叉積判斷兩點的位置關係.

重複上述步驟即可.

*/#include

#include

#include

#include

#define maxn 100001

using

namespace

std;

int n,top;

double ans;

struct datas[maxn],a[maxn];

bool cmp(const data &x,const data &y)

double slove(double x1,double y1,double x2,double y2)

int main()

int l=top;

s[++top]=a[n-2];

for(int i=n-3;i>=0;i--)

ans+=slove(s[0].x,s[0].y,s[top-1].x,s[top-1].y);

for(int i=0;i1;i++)

ans+=slove(s[i].x,s[i].y,s[i+1].x,s[i+1].y);

printf("%.1lf",ans);

return

0;}

Codevs 1298 凸包周長

1298 凸包周長 時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題目描述 description 給出平面上n個點,求出這n個點形成的凸包的周長。凸包的定義 能覆蓋住這個n個點的最小凸多邊形。輸入描述 input description 第一行乙個整數n,接下來n...

1298 凸包周長

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解檢視執行結果 給出平面上n個點,求出這n個點形成的凸包的周長。凸包的定義 能覆蓋住這個n個點的最小凸多邊形。輸入描述 input description 第一行乙個整數n,接下來n行,每行兩個整數x和y,表示乙個點的...

poj1113 求凸包 計算凸包周長

經典的求凸包題,模板題。要求用資源最少,那肯定這個多邊形是個凸多邊形,也就是凸包。所以先求出凸包,計算它的周長。還有就是這道題所說的,要離城牆l遠,其實就是在加上乙個圓的周長,圓的半徑就是l。都說到這了,這道題還差什麼?還差乙個經典的凸包模板!哈哈 如下 include include includ...