zoukankan      html  css  js  c++  java
  • hdu Turn the corner

    这题是道三分的题,首先要分析满足条件的情况,这个就是平面几何的功夫了。要想车子能够转弯成功,最上面那个点到水平线的距离要小于等于y。这里h和s的公式就是利用平面几何的知识求出来的:s=l*cos(a)+w*sin(a)-x;s=l*cos(a)+w*sin(a)-x;其中s为最右边的那个点到拐角处的水平距离。因为角度和高度h满足凸函数的关系,因此想到利用角度采用三分的方法进行求解。

    #include"iostream"
    #include"stdio.h"
    #include"algorithm"
    #include"string.h"
    #include"cmath"
    #define exp 1e-8
    #define pi acos(-1.0)
    using namespace std;
    double x,y,l,w;
    double cal(double a)
    {
        double s=l*cos(a)+w*sin(a)-x;
        double s=l*cos(a)+w*sin(a)-x;
        return h;
    }
    int main()
    {
        while(scanf("%lf%lf%lf%lf",&x,&y,&l,&w)==4)
        {
            double left=0;
            double right=pi/2;;
            double mid,midmid;//三分
            while(abs(right-left)>exp)
            {
                mid=(right+left)/2;
                midmid=(mid+right)/2;
                if(cal(mid)>=cal(midmid)) right=midmid;
                else left=mid;
            }
            if(cal(mid)<=y) cout<<"yes"<<endl;
            else cout<<"no"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    c语言cgi笔记
    End of script output before headers错误解决方法
    我的树莓派3配置脚本
    Qt学习(4)
    Qt学习(3)
    Qt学习(2)
    Qt学习(1)
    C++ Primer中文版(第五版)——第六章 函数
    C++ 11 ----Lambda表达式
    Java SPI 源码解析
  • 原文地址:https://www.cnblogs.com/acm-jing/p/4321919.html
Copyright © 2011-2022 走看看