poj 2507 Crossed ladders 二分解方程

题意:

给两把梯子的长度x,y和他们交点的高度c,求两梯子底部之间的距离。

分析:

化简后得方程c/sqrt(x^2-w^2)+c/sqrt(y^2-w^2)=1,f(w)=c/sqrt(x^2-w^2)+c/sqrt(y^2-w^2)单调增,可以二分解,注意精度。

代码:

//poj 2507
//sep9
#include <iostream>
#include <cmath>
using namespace std;
const double eps=1e-8;

int main()
{
	double x,y,c;
	while(scanf("%lf%lf%lf",&x,&y,&c)==3){
		double l,r,mid,tmp;
		l=0,r=min(x,y)-1e-4;
		while(r-l>eps){
			mid=(r+l)/2;
			tmp=c/sqrt(x*x-mid*mid)+c/sqrt(y*y-mid*mid);
			if(tmp-1>eps)
				r=mid;
			else if(tmp-1<-eps)
				l=mid;
			else
				break;
		}
		printf("%.3lf\n",l+1e-8);
	}
	return 0;
} 
时间: 2024-10-19 02:41:52

poj 2507 Crossed ladders 二分解方程的相关文章

UVA 10566 &amp;&amp; POJ 2507 Crossed Ladders (几何)

题意:两栋楼之间有两个梯子,如图中的虚线所示,一个梯子的长度为x,另一个梯子的长度为y,两个梯子的交点离地面的高度为c,问两栋楼之间的距离. 看到这类的几何题,配有几张情景图,总是有一种莫名的亲切感,有一种想秒A的冲动>=< 解题思路: 在纸上画出图,设宽度为w,交点距左楼距离为a,则根据三角形相似可以推出: 将第二个方程带入到第一个,化简得到:   1=c/sqrt(x*x-w*w)+c/sqrt(y*y-w*w);将得到方程二分求解,即可得到题目所求 代码: #include <st

poj 1905 Expanding Rods 二分解方程

题意: 中已知L,S解h. 分析: 两个方程两个未知数,理论是可解的.解起来有困难,可用二分的方法. 代码: #include <iostream> #include <cmath> using namespace std; int main() { double l,n,c,s,r; while(scanf("%lf%lf%lf",&l,&n,&c)==3){ if(l<0) break; double mid,low=0.0,h

POJ 1692 Crossed Matchings(DP)

Description There are two rows of positive integer numbers. We can draw one line segment between any two equal numbers, with values r, if one of them is located in the first row and the other one is located in the second row. We call this line segmen

POJ 1984 Navigation Nightmare 二维带权并查集

题目来源:POJ 1984 Navigation Nightmare 题意:给你一颗树 k次询问 求2点之间的曼哈顿距离 并且要在只有开始k条边的情况下 思路:按照方向 我是以左上角为根 左上角为原点 dx[i]为i点距离根的x坐标 dy[]是y坐标 这两个可以通过路径压缩求出 只不过是二维而已 #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; const int m

POJ 2155 Matrix 【二维树状数组】

题目链接:http://poj.org/problem?id=2155 题目大意:给出一个N*N的0矩阵,下面给出两种指令:1. 给出的第一个数据为'C',再给出四个整形数据,x1,y1,y1,y2,对以(x1,y1)(x2,y2)分别为左上角和右下角坐标的矩阵内的元素进行反转(0变1,1变0)         2. 给出的第一个数据为'Q',再给出两个数据,x,y,然后输出此时这个坐标上的元素. 这题用二维树状数组解,树状数组能够对某区间更新所有元素的和,树状数组维护的是c[1][1]到c[i

UVA10566 Crossed Ladders (数学+二分)

UVA10566 Crossed Ladders Description如图1,多组数据,输入x,y,c,求出t的大小,保留三位小数 Hint由相似三角形的知识,我们用两种方法分别表示出图中Lx,就可以得出一个等式关系:$$\frac{1}{b}+\frac{1}{a}=\frac{1}{c} ??(1)$$又有等式$$a=\sqrt{x^2-t^2},b=\sqrt{y^2-t^2}$$把这两式代入(1)式可以得到$$\frac{1}{\sqrt{x^2-t^2}}+\frac{1}{\sqr

POJ 2429 long long 质因数分解

GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16206   Accepted: 3008 Description Given two positive integers a and b, we can easily calculate the greatest common divisor (GCD) and the least common multiple (LCM) of a

POJ 1661 Help Jimmy(二维DP)

题目链接:http://poj.org/problem?id=1661 题目大意: 如图包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的某处(高H处)开始下落,它的下落速度始终为1米/秒.当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒.当Jimmy跑到平台的边缘时,开始继续下落.Jimmy每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束. 设计一个程序,计算Jimmy到底地面时可能的最

Prime Test POJ - 1811(素性检测+大数分解)

Prime Test POJ - 1811 题意:判断N (2 <= N < 2 54) 是不是素数,如果不是求它的最小素因数. millerRabin素性检测 + pollard rho大数分解 链接 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <algorithm> 5 using namespace std; 6 #define LL l