大意:給定些點,組成多邊形,問有沒有圓把多邊形圍起來並且圓距離多邊形最小的距離是m;求多邊形的邊長。
思路:首先要知道怎麼求外邊圓的周長,l圓=l(半徑為m的圓)+凸包外接圓半徑。
至於為什麼要加上小圓半徑因為所有的小圓的一部分角度加和一定為360。
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-8
#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
const
double pi=acos(-1.0);
using
namespace
std;
struct nodeq[1010],vex[1010];
int n,cnt;
double dis(node a,node b)
bool cmp(node a,node b)
int cro(node a,node b,node c)
void gramham()
int k = cnt;
for(int i = n-2;i >= 0;--i)
}int main()
gramham();
double ans = 0;
for(i = 0;i < cnt-1;++ i)
ans += 2*pi*m;
printf("%.0f\n",ans);
}return
0;}
POJ1113 Wall 求凸包周長
題意 國王要把n個城堡外建城牆,使得城牆距離任一城堡的距離都大於l,給出n個城堡的座標,求城牆的最小周長。思路 利用城堡的座標可以形成乙個凸包,在拐角處畫乙個半徑為l的圓弧,最終所有圓弧合起來正好是乙個半徑為l的圓,所以答案就是凸包的周長 半徑為l的圓的周長。先求凸包的頂點,再叉積求面積,兩點間的距...
POJ 1113 Wall 圍牆 凸包
題意 給出一系列的點,在凸包外面l公尺建造圍牆,求圍牆的長度。其實就是裸凸包 半徑l的圓周長。這題卡了一下午.由於裡面的精度有些問題.後面輸出最好用 f不要用lf和int轉換.第一次做凸包,感覺還好.author illuz blog file poj1113.cpp create date 201...
POJ 1113 Wall 凸包周長
題意 給定n nn個城堡的座標,要求建設連續的圍牆,且圍牆上任意一點距離任意城堡距離不小於l ll,求圍牆的最小長度。求出這些點的凸包,答案即凸包長度加上乙個半徑為l ll的圓的周長,即對於凸包的邊,在距離凸包邊l ll處建設平行的圍牆即可,而對於拐角處,畫半徑為l ll的圓即可,最後各個拐角處可以...