poj2507 Crossed ladders

来源:互联网 发布:axure7.0mac中文版下载 编辑:程序博客网 时间:2024/06/05 14:06

题意:已知x,y,c,求d
已知x,y,c,求d
题解:答案满足单调性,即x,y恒定时,d越大,c越小。因此可以二分答案。

#include<cstdio>#include<cmath>#include<algorithm>using namespace std;#define eps 1e-5double l,r,mid,a,b,c,x,y,now;bool judge(double k){    x=sqrt(a*a-k*k);    y=sqrt(b*b-k*k);    now=(x*y)/(x+y);    if(now-c>eps) return 0;    else return 1;}int main(){    while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){        l=0;r=max(a,b);        while(r-l>=eps){            mid=(l+r)/2.0;            if(judge(mid)) r=mid;            else l=mid;        }        printf("%.3lf\n",l);    }    return 0;}
原创粉丝点击