日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hdu2438 三分

發布時間:2025/6/17 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu2438 三分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你個90度的轉彎,和一輛標準矩形的車,問你這臺車能不能拐過去..

思路:


? ? ?求出靠近最里側的那條邊所在的直線(這個圖形右下角為坐標原點)?
? ? ?y = x * tan(du) + l * sin(du) + d / cos(du);
? ? ?那么我們現在固定y = 題目中的那個 X則,根據(du)的不同,我們可以找到不同的x,
只要-x或者x的絕對值最大的時候小于 題目中的 Y就行了,所以先求反函數
x = y * tan(du) + l * sin(du) + d / cos(du)

則 -y = (-x + l * sin(du) + d / cos(du)) / tan(du) 讓他最大就行了,因為他是凸(凹)性的函數所以用三分找(凸(凹)性可以根據二次導數判斷).?

#include<stdio.h> #include<math.h>#define eps 1e-9 double PI = acos(-1.0); double X ,Y ,L ,D;double Fun(double du) {return (-X + L * sin(du) + D / cos(du)) / tan(du); }bool solve() {if(X < D || Y < D) return 0;double low ,up ,mid ,mmid;double dis1 ,dis2;low = 0;up = PI / 2;while(1){mid = (low + up) / 2;mmid = (mid + up) / 2;dis1 = Fun(mid);dis2 = Fun(mmid);if(dis1 > dis2) up = mmid;else low = mid;if(up - low < eps) break;}return dis1 <= Y; }int main () {while(~scanf("%lf %lf %lf %lf" ,&X ,&Y ,&L ,&D)){solve()? printf("yes\n") : printf("no\n");}return 0; }

總結

以上是生活随笔為你收集整理的hdu2438 三分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。