zoukankan      html  css  js  c++  java
  • HDOJ(2438)几何里的三分

    Turn the corner

    http://acm.hdu.edu.cn/showproblem.php?pid=2438

    题目:一辆车能否在一个路口拐弯,看图就很明白啦。

    算法:见下图,只要求出图中明黄色线段的最大值小于y就可以了。一图抵千言。

     

     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 double x,y,l,d;
     5 
     6 double f_angle(double angle)
     7 {
     8     return l*cos(angle)+d/sin(angle)-x/tan(angle);
     9 }
    10 
    11 int main()
    12 {
    13     double mid1,mid2,low,high;
    14     while(cin>>x>>y>>l>>d)
    15     {
    16         low=0.0;
    17         high=acos(-1.0)/2;
    18         while(high-low>=1.0e-6)
    19         {
    20             //三分法求极值
    21             mid1=low+(high-low)/3.0;
    22             mid2=high-(high-low)/3.0;
    23             if(f_angle(mid1)<=f_angle(mid2))
    24                 low=mid1;
    25             else
    26                 high=mid2;
    27         }
    28         if(f_angle(low)<y)
    29             cout<<"yes"<<endl;
    30         else
    31             cout<<"no"<<endl;
    32     }
    33     return 0;
    34 }
    View Code

    二分查找所面向的搜索序列的要求是:具有单调性(不一定严格单调);

    与二分查找不同的是,三分法所面向的搜索序列的要求是:序列为一个凸性函数(包括上凸和下凸)。

  • 相关阅读:
    每日作业
    Bootstrap框架
    每日作业
    前端之jQuery
    css之浮动详解
    sh命令
    shell编程:sed的选项
    linux 创建连接命令 ln -s 软链接
    grep与egrep命令
    Centos之命令搜索命令whereis与which
  • 原文地址:https://www.cnblogs.com/chiry/p/3534199.html
Copyright © 2011-2022 走看看