- 题166.hdu2438 三分-Turn the corner
- 一、题目
- 二、题解
题166.hdu2438 三分-Turn the corner
一、题目 二、题解
依题意知,尽可能让车贴着外面的墙璧转弯,即图中的x轴和y轴,此时只要保证图中直线与y=X交点横坐标在(-Y,0)那么转弯成功。
即对任意的θ∈(0,90°),联立y=x与直线方程得到的x=(X-(l*sin(θ)+w/cos(θ)))/tan(θ)>-Y恒成立。分析知,x为单峰函数,所以用三分法去求出x最小值,如果这个最小值能够大于-Y则转弯成功,反之就转弯失败。
#includeusing namespace std; const double eps=1e-6; const double pi=acos(-1.0);//用cosΠ=-1,借反三角函数acos得到Π double x,y,l,w; double cal(double angle)//计算x { double res=(x-(l*sin(angle)+w/cos(angle)))/tan(angle); return res; } int main() { while(cin>>x>>y>>l>>w) { double l=0,r=pi/2,mid1,mid2;//控制枚举区间为图中那个θ角,范围具体控制在0到90° while(l+eps



