【CZY选讲·Yjq的棺材】
生活随笔
收集整理的這篇文章主要介紹了
【CZY选讲·Yjq的棺材】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述?
Yjq想要將一個(gè)長(zhǎng)為寬為的矩形棺材(棺材表面絕對(duì)光滑,所以棺材可以任意的滑動(dòng))拖過(guò)一個(gè)L型墓道。? 如圖所示,L型墓道兩個(gè)走廊的寬度分別是和,呈90°,并且走廊的長(zhǎng)度遠(yuǎn)大于。? 現(xiàn)在Hja想知道對(duì)于給定的,,,最大的是多少,如果無(wú)論如何棺材都不可能通過(guò),則輸出"My poor head =(" 。?
數(shù)據(jù)范圍?
1≤,,≤10^4。
?
題解:
????? ①三分法求下凸函數(shù)極值。
????? ③具體就是求靠外直角的那條斜邊到內(nèi)拐角點(diǎn)的距離,然后比較和寬的大小就可以說(shuō)明能夠通過(guò)了
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> using namespace std; int a,b,l; double get(double v1) {double v2=sqrt(l*l-v1*v1);if (a*v1+b*v2<v1*v2) return -1e+20;else return (a*v1+b*v2-v1*v2)/l; } int main() {freopen("b.in","r",stdin);freopen("b.out","w",stdout);scanf("%d%d%d",&a,&b,&l);if (a>=l && b>=l) printf("%d.0000000\n",l);else{if (a>=l) printf("%d.0000000\n",b);else{if (b>=l) printf("%d.0000000\n",a);else{double lv=0.0,rv=l;for (int c=1;c<=100;c++){double m1=(rv-lv)/3.0+lv;double m2=lv+rv-m1;if (get(m1)<0.0 || get(m2)<0.0){printf("My poor head =(\n");return 0;}if (get(m1)<get(m2)) rv=m2;else lv=m1;}printf("%.7lf\n",get(rv));}}}return 0; }?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
突然間我明白淚水映出的歲月,付出所有只為找尋你的夢(mèng)。————汪峰《笑著哭》
轉(zhuǎn)載于:https://www.cnblogs.com/Damitu/p/7654601.html
總結(jié)
以上是生活随笔為你收集整理的【CZY选讲·Yjq的棺材】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JVM命令
- 下一篇: CodeForces - 869B Th