杭电 2438 Turn the corner 解题报告

    解题报告:自己画个图,可知,在y>=max(w/sin(a)+l*cos(a)-x/tan(a))(0<=a<=90)时,汽车可以通过,否则不可通过。

    对于这种函数,可以使用三分法,求最大值。笔者比较懒。。。直接暴力,代码如下:

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int i=0;
    double x,y,l,w;
    double PI=acos(-1.0)/20000;
    while(cin>>x>>y>>l>>w)
    {
        for(i=0;i<=10000;i++)
            if(y<w/sin(i*PI)+l*cos(i*PI)-x/tan(i*PI))
                break;
        cout<<(i==10001?"yes":"no")<<endl;
    }
}

 

posted @ 2013-02-14 21:58  SF-_-  阅读(152)  评论(0编辑  收藏  举报