bzoj 1502 NOI2005 月下檸檬樹

2021-06-27 03:13:38 字數 933 閱讀 9837

檔案的第1行包含乙個整數n和乙個實數alpha,表示檸檬樹的層數和月亮的光線與地面夾角(單位為弧度)。第2行包含n+1個實數h0,h1,h2,…,hn,表示樹離地的高度和每層的高度。第3行包含n個實數r1,r2,…,rn,表示檸檬樹每層下底面的圓的半徑。上述輸入檔案中的資料,同一行相鄰的兩個數之間用乙個空格分隔。輸入的所有實數的小數點後可能包含1至10位有效數字。

輸出1個實數,表示樹影的面積。四捨五入保留兩位小數。

2 0.7853981633

10.0 10.00 10.00

4.00 5.00

171.97

1≤n≤500,0.3

前段時間忙noip結果都沒來寫這題的題解。

simpson可以熟練應用了應該。。

投影=圓+切線的總面積。定點我們可以想象成乙個r=0的圓。

然後切線的求法就是自己畫個圖。然後相似三角形一下就好了

#include#include#include#include#includeusing namespace std;

const double eps=1e-5;

struct circle

a[10001];

struct circle2

sx[10001];

struct line

lin[10001];

double h[10001];

bool flag[10001];

int p,n;

inline double fabs(double x)

inline double max(double x,double y)

inline double geth(double x)

for(i=1;i<=p;i++)

{if(lin[i].x1>x||lin[i].x2

BZOJ1502 NOI2005 月下檸檬樹

傳送門顯然的是,每乙個圓的影子,就是從樹上的圓按光線方向平移至地面的圓。至於兩個圓之間的連線部分,則是每兩個在樹上相鄰的圓的,對應的影子圓的,公切線圍起來的部分,如下圖所示 所以我們現在要求每兩個在原樹上相鄰的圓的影子圓構成的圖形的並。只看 x 軸上半部分,可以把它想象成乙個函式,求單點值是 o n...

bzoj 2005 Noi2010 能量採集

description 棟棟有一塊長方形的地,他在地上種了一種能量植物,這種植物可以採集太陽光的能量。在這些植物採集能量後,棟棟再使用乙個能量匯集機器把這些植物採集到的能量匯集到一起。棟棟的植物種得非常整齊,一共有n列,每列有m棵,植物的橫豎間距都一樣,因此對於每一棵植物,棟棟可以用乙個座標 x,y...

BZOJ2005 Noi2010 能量採集

description 棟棟有一塊長方形的地,他在地上種了一種能量植物,這種植物可以採集太陽光的能量。在這些植物採集能量後,棟棟再使用乙個能量匯集機器把這些植物採集到的能量匯集到一起。棟棟的植物種得非常整齊,一共有n列,每列有m棵,植物的橫豎間距都一樣,因此對於每一棵植物,棟棟可以用乙個座標 x,y...