bzoj 1043 HAOI2008 下落的圓盤

2021-08-01 19:07:51 字數 962 閱讀 6302



time limit: 10 sec  

memory limit: 162 mb

submit: 1407  

solved: 591 [

submit][

status][

discuss]

有n個圓盤從天而降,後面落下的可以蓋住前面的。求最後形成的封閉區域的周長。看下面這副圖, 所有的紅

色線條的總長度即為所求.

第一行為1個整數n,n<=1000

接下來n行每行3個實數,ri,xi,yi,表示下落時第i個圓盤的半徑和圓心座標.

最後的周長,保留三位小數 2

1 0 0

1 1 0

10.472

【分析】

n^2判斷+貪心線段覆蓋

需要用到acos,atan2之類的函式(具體不解釋咯)

ps:注意前面的圓被後面的圓完全覆蓋的情況!

【**】

//bzoj 1043 [haoi2008]下落的圓盤

#include#include#include#include#define eps 1e-8

#define pi acos(-1)

#define fo(i,j,k) for(i=j;i<=k;i++)

using namespace std;

const int mxn=1005;

double ans;

int n,m,top;

struct angle s[mxn];

struct circle c[mxn];

inline bool comp(angle x,angle y)

tmp+=2*pi-now;

ans+=tmp*c[i].r;

} printf("%.3lf\n",ans);

return 0;

}

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 最後的周長,保...