hdu 2438题解

来源:互联网 发布:小猪cms微电商系统 编辑:程序博客网 时间:2024/06/05 14:10

三分题,公式推不出来。。。。
汽车最高点离拐角的水平距离s=l*cos(sita)-x;
汽车最高点离拐角的垂直距离h= s*tan(sita)+w/cos(sita);
显然h先增后减,所以用三分求出h的最大值,然后与y一比即得答案
http://pic002.cnblogs.com/images/2011/276015/2011082521195360.jpg

#include <stdio.h>#include <math.h>#define __Pi 3.141592653589793#define eps 1e-8double x,y,l,w;double func(double sita){    double s=l*cos(sita)-x;    return s*tan(sita)+w/cos(sita);}int main(int argc, char const *argv[]){    double lt,rt,mid,mmid;    while(scanf("%lf %lf %lf %lf",&x,&y,&l,&w)==4)    {        if(w>x||w>y) {puts("no"); continue;}//记得输出‘nolt=eps,rt=__Pi/2.0-eps;        while(rt-lt>eps)        {            mid=lt+(rt-lt)/3.0;            mmid=lt+2.0*(rt-lt)/3.0;            if(func(mid)>func(mmid)) rt=mmid;            else lt=mid;        }        if(func(mmid)<=y) puts("yes");        else puts("no");     }    return 0;}
0 0
原创粉丝点击