bzoj4920 薄餅切割

2021-08-02 18:12:40 字數 1221 閱讀 6166

傳送門

首先要發現其實木棍覆蓋區域是圓環形狀的。

於是我們要求出大圓半徑r和小圓半徑r

首先大圓半徑顯然是在兩個端點處取到的。

然後,發現點在木棍上移動是與圓心距離的函式是單峰函式。

於是我們可以三分求最小值。

然後問題九轉化成了圓形面積和長方形面積的交。

分類要論以下就可以求出來了。

#include

#include

#include

#include

#include

#include

#define eps 1e-10

#define pi acos(-1)

#define db double

using namespace std;

int t;

db d1,d2;

db s

qr(db x)

struct p;

p(db _,db __):

x(_),y(__){}

void read()

friend p operator +(p a,p b)

friend p operator -(p a,p b)

friend p operator *(p a,db b)

}o,w,x,y,p1,p2;

db dis(p a,p b)

db solve(db r)

if (w.y-o.y

//puts("2");

db tmp=sqrt(s

qr(r)-s

qr(w.y-o.y));

db angle=acos((w.y-o.y)/r)*2

*(0.5/pi);

s-=2

*(pi*r

*r*angle-2

*tmp

*(w.y-o.y)/2);

}returns;}

int main()

p1=x+(y-x)*((l+r)/2);

d2=min(d2,dis(p1,o));

printf("%.15lf\n",solve(d1)-solve(d2));

//printf("%.15lf %.15lf\n",solve(d1),d1);

//printf("%.15lf %.15lf\n",solve(d2),d2);

}}

492 構造矩形

鏈結 作為一位web開發者,懂得怎樣去規劃乙個頁面的尺寸是很重要的。現給定乙個具體的矩形頁面面積,你的任務是設計乙個長度為 l 和寬度為 w 且滿足以下要求的矩形的頁面。要求 1.你設計的矩形頁面必須等於給定的目標面積。2.寬度 w 不應大於長度 l,換言之,要求 l w 3.長度 l 和寬度 w ...

492 構造矩形

作為一位web開發者,懂得怎樣去規劃乙個頁面的尺寸是很重要的。現給定乙個具體的矩形頁面面積,你的任務是設計乙個長度為 l 和寬度為 w 且滿足以下要求的矩形的頁面。要求 1.你設計的矩形頁面必須等於給定的目標面積。2.寬度 w 不應大於長度 l,換言之,要求 l w 3.長度 l 和寬度 w 之間的...

492 構造矩形

作為一位web開發者,懂得怎樣去規劃乙個頁面的尺寸是很重要的。現給定乙個具體的矩形頁面面積,你的任務是設計乙個長度為 l 和寬度為 w 且滿足以下要求的矩形的頁面。要求 1.你設計的矩形頁面必須等於給定的目標面積。2.寬度 w 不應大於長度 l,換言之,要求 l w 3.長度 l 和寬度 w 之間的...