1005 Turn the corner
Mr.west 买了一辆新车,他在城市中旅行。一天,他驾车来到了一个垂直的角落。他想通过此弯道,现在给出车的长和宽,弯道的宽度和他现在没转弯之前的街道宽度。求出他能不能通过该弯道。
一个单调三角函数,所以是一个的二分法.
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define pi 3.1415
using namespace std;
#include <cstring>
#include <cstdio>
#include <cmath>
#define pi 3.1415
using namespace std;
const double eps = 1e-4;
double l,x,y,w;
double calu(double a){
return l*cos(a)+(w-x*cos(a))/sin(a);
}
return l*cos(a)+(w-x*cos(a))/sin(a);
}
double ternary_search(double l,double r){
double ll,rr;
while(r-l>eps){
ll=(2*l+r)/3;
rr=(2*r+l)/3;
if(calu(ll)>calu(rr))
r=rr;
else
l=ll;
}
return r;
}
double ll,rr;
while(r-l>eps){
ll=(2*l+r)/3;
rr=(2*r+l)/3;
if(calu(ll)>calu(rr))
r=rr;
else
l=ll;
}
return r;
}
{
while(cin>>x>>y>>l>>w){
double l=0,r=pi/2;
double tmp=ternary_search(l,r);
if(calu(tmp)<=y)
puts("yes");
else
puts("no");
}
return 0;
}