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...