time limit: 10 sec memory limit: 162 mb
submit: 1725 solved: 743
[submit][status][discuss]
有n個圓盤從天而降,後面落下的可以蓋住前面的。求最後形成的封閉區域的周長。看下面這副圖, 所有的紅
色線條的總長度即為所求.
第一行為1個整數n,n<=1000
接下來n行每行3個實數,ri,xi,yi,表示下落時第i個圓盤的半徑和圓心座標.
最後的周長,保留三位小數
21 0 0
1 1 0
10.472
這題讓我想到了線段覆蓋。。。
輸錯乙個double調了我一晚上
利用三角函式求出每個圓盤覆蓋先前圓盤弧度的範圍,最後統計總共覆蓋了多少弧度,計算出沒有被覆蓋的弧度大小,乘以半徑就是周長
1 #include2 #include3 #include4 #include5 #include6 #include7using
namespace
std;89
const
int maxn=1005;10
const
double pi=acos(-1.0
);11
#define sqr(x) (x)*(x)
1213
struct
line14;
17double
r[maxn],x[maxn],y[maxn];
18 vectorl[maxn];
19 vector::iterator iter;
2021
intn;
22double
ans;
2324
bool
cmp(line a,line b)
2528
29double dist(int a,int
b)30
3334
bool conta(int a,int
b)35
3839
bool inter(int a,int
b)40
4344
void insrad(int a,int
b)45
);52 l[a].push_back((line));
53return;54
}55if(st+rad>pi)
56);
58 l[a].push_back((line));
59return;60
}61 l[a].push_back((line));62}
6364
double cal(int
x)65
79else last=max(last,iter->r);
80 t+=pi-last;
81return t*r[x];82}
8384
intmain()
85
BZOJ1043 HAOI2008 下落的圓盤
每個圓盤只會受到後邊的圓盤的影響 所以算一下每個圓盤和後邊的圓盤相交的圓心角,然後求個並即可 可以用餘弦定理 複雜度n 2 log n 注意特判沒有交 include include include include include include include include include in...
bzoj1043 HAOI2008 下落的圓盤
題目鏈結 有n個圓盤從天而降,後面落下的可以蓋住前面的。求最後形成的封閉區域的周長。直接模擬,求出當前圓盤與之前的所有的圓盤的交點,用極角表示,模擬結束後求出每個圓盤未被覆蓋的角度即可。include include include include include include using nam...
HAOI2008 bzoj1043 下落的圓盤
description 有n個圓盤從天而降,後面落下的可以蓋住前面的。求最後形成的封閉區域的周長。看下面這副圖,所有的紅 色線條的總長度即為所求.input 第一行為1個整數n,n 1000 接下來n行每行3個實數,ri,xi,yi,表示下落時第i個圓盤的半徑和圓心座標.output 最後的周長,保...