傳送門:bzoj2829
太zz了,這麼水的題都沒想出來。。。
如果是矩形,凸包上的點一定都是矩形的頂點,gra
ha
mgraham
graham
求出凸包後將每個頂點的尖角轉成圓弧,貢獻不好算。。。
於是將矩形的頂點轉成四個1
4\frac 14
41圓的圓心,求出凸包周長後+乙個圓的周長即可。
直接貼黃學長的了=_=
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define rad 100000000
#define inf 1000000000
#define ll long long
#define eps 1e-8
#define pa pair
#define pi acos(-1)
using
namespace std;
double ans;
int n,cnt,top;
double a,b,r;
double
sqr(
double x)
struct p
friend p operator
-(p a,p b)
friend
double
operator
*(p a,p b)
friend
bool
operator
<
(p a,p b)
friend
double
dis2
(p a)
}p[400005
],q[
400005];
struct reco[
100005];
void
print
(p a)
p move
(p a,
double d,
double a)
bool
cmp(p a,p b)
void
graham()
}void
build()
}void
solve()
intmain()
bzoj2829 信用卡凸包 凸包
26.0 2.0 0.0 0.0 0.0 0.0 2.0 2.0 1.5707963268 21.66 本樣例中的2張信用卡的輪廓在上圖中用實線標出,如果視1.5707963268為 pi 2 pi為圓周率 則其凸包的周長為16 4 sqrt 2 題解 把邊上的圓去掉然後求一遍凸包,最後再加上乙個圓...
bzoj 2829 信用卡凸包 (凸包)
time limit 10 sec memory limit 128 mbsec special judge submit 327 solved 151 submit status discuss 26.0 2.0 0.0 0.0 0.0 0.0 2.0 2.0 1.5707963268 21.66...
BZOJ2829 信用卡凸包
標籤 凸包 題目傳送門 description input output sample input 26.0 2.0 0.0 0.0 0.0 0.0 2.0 2.0 1.5707963268 sample output 21.66 hint 本樣例中的2張信用卡的輪廓在上圖中用實線標出,如果視1.5...