UVA10566 Crossed Ladders(计算几何+二分)

有两把梯子搭在墙上,给出这两把梯子的长度 x,y,以及他们的交点,交点的高度为 h,求这两个房屋之间的距离 

 

 

如上图所示,易证红色内有两个三角形相似和绿色内有两个三角形相似

所以有:

    double x,y,h;

bool C(double aim)
{
    double ans=1.0/sqrt(x*x-aim*aim)+1.0/sqrt(y*y-aim*aim);
    if(ans<1/h) return true;
    else return false;
}

int main()
{
    //IOS;
    while(~sfff(x,y,h)){
        double l=0,r=min(x,y),mid;
        while(r-l>eps){
            mid=(l+r)/2;
            if(C(mid)){
                l=mid;
            }
            else{
                r=mid;
            }
        }
        printf("%.3lf\n",mid);
    }
    //PAUSE;
    return 0;
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页