您的位置:首页 > 其它

UVa 10566 Crossed Ladders 平面几何结论,二分答案

2014-04-11 00:37 525 查看
题目地址:pdf版本

首先有一个平面几何结论,那就是在如下图中



始终有1/a+1/b=1/c ; 用相似三角形的知识很容易证明。

然后设?=t 。 那么a=sqrt(x*x-t*t), b=sqrt(y*y-t*t);

方程列出来了。

我们不需要直接解方程,把左边看做是t的函数,它单增的,我们可以二分答案。

代码:

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;

int main()
{
double x,y,c;
while(cin>>x>>y>>c)
{

double l=0,r=min(x,y);

double mid=l+(r-l)/2;

while(r-l>1e-5)
{
mid=l+(r-l)/2;

if(1/sqrt(x*x-mid*mid)+1/sqrt(y*y-mid*mid)>1/c)  r=mid;
else l=mid;
}

printf("%.3lf\n",mid);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: