Turn the corner HDU - 2438 三分 枚举角度 几何
2017-07-28 09:15
417 查看
Description
Mr. West bought a new car! So he is travelling around the city.One day he comes to a vertical corner. The street he is currently in has a width x, the street he wants to turn to has a width y. The car has a length l and a width d.
Can Mr. West go across the corner?
Input
Every line has four real numbers, x, y, l and w.Proceed to the end of file.
Output
If he can go across the corner, print “yes”. Print “no” otherwise.Sample Input
10 6 13.5 410 6 14.5 4
Sample Output
yesno
Hint
题意
题解:
利用角度关系构造函数 求出车在转弯时所占据的长度 这个长度最大值如果大于y说明过不去 可以找到这个长度的函数表达式f (t) = l*cos(t)+(w-x*cos(t))/sin(t);
AC代码
#include <cstdio> #include <iostream> #include <queue> #include <map> #include <vector> #include <cmath> #include <set> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; const double eps = 1e-8; double x,y,l,w; double check(double t){ double ans = l*cos(t)+(w-x*cos(t))/sin(t); return ans; } int main(){ while (scanf("%lf%lf%lf%lf",&x,&y,&l,&w)!=EOF){ double l = 0,r = acos(-1.0)/2; while (r-l>eps){ double ll = (2*l+r)/3; double rr = (2*r+l)/3; double ans1 = check(ll); double ans2 = check(rr); if (ans1<ans2) l = ll; else r = rr; } if (check(l)>y) printf("no\n"); else printf("yes\n"); } return 0; }
相关文章推荐
- HDU 2438 Turn the corner(三分枚举角度)
- HDU 2438 Turn the corner (计算几何 + 三分)
- HDU 2438 Turn the corner 计算几何+三分
- hdu 2438 Turn the corner(几何+三分)
- HDU 2438 Turn the corner(三分查找, 几何求解)
- hdu 2438 计算几何 三分 Turn the corner
- hdu-2438-Turn the corner(三分)
- hdu 2438 Turn the corner(三分)
- HDU 2438 Turn the corner(三分)
- HDU [ Turn the corner ]——三分+几何
- HDU 2438 Turn the corner 三分
- HDU 2438 Turn the corner(三分查找)
- hdu 2348 Turn the corner(三分&&几何)(中等)
- hdu 2438 - Turn the corner(三分)
- HDU 2438 Turn the corner【三分】
- HDU 2438 Turn the corner (三分求极值)
- HDU 2438 Turn the corner(三分)
- hdu 2438 Turn the corner [ 三分 ]
- HDU 2438 Turn the corner 三角函数+三分查找法
- HDU 2438 Turn the corner【三分】