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,high=l/2;
		s=(1+n*c)*l;
		while(high-low>1e-5){
			mid=(low+high)/2;
			r=(4*mid*mid+l*l)/(8*mid);
			if(2*r*asin(l/(2*r))<s)
				low=mid;
			else
				high=mid;
		}
		printf("%.3lf\n",low);
	}
	return 0;
} 
时间: 2024-11-05 20:47:36

poj 1905 Expanding Rods 二分解方程的相关文章

POJ 1905 Expanding Rods 浮点数二分

Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11145   Accepted: 2879 Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. Whe

poj 1905 Expanding Rods (数学 计算方法 二分)

题目链接 题意:将长度为L的棒子卡在墙壁之间.现在因为某种原因,木棒变长了,因为还在墙壁之间,所以弯成了一个弧度,现在求的是弧的最高处与木棒原先的地方的最大距离. 分析: 下面的分析是网上别人的分析: 设弦长为L0(即原长),弧长为L1=(1+n*C)*l0,目标值为h,半径为R,弧所对圆心角为2θ(弧度制).可以得到以下方程组:圆的弧长公式:L1=2θR三角函数公式:L0=2*R*sinθ,变换得θ=arcsin(L0/(2*R))勾股定理:R^2=(R-h)^2+(0.5*L0)^2,变换得

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 ma

POJ 1905 Expanding Rods (二分+计算几何+精度处理)

题目地址:POJ 1905 用二分枚举h,然后判断弧长是否符合条件.重点还是在精度问题上,具体看代码吧.. #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algorithm> #include <stdlib.h> #include <map> #include <set> #includ

poj 1905 Expanding Rods(木杆的膨胀)【数学计算+二分枚举】

Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13516   Accepted: 3484 Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. Whe

POJ 1905 Expanding Rods

Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12796   Accepted: 3299 Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. Whe

POJ 1905 Expanding Rods#二分

http://poj.org/problem?id=1905 题意:将一条直线变成一条弧线(该弧线是圆的一部分),求中心位置发生的位移. 由于精度需要控制好,所以选择用圆半径作为二分的目标,l=0,r=INF,LL为弧线长度,根据半径mid以及弦长L,可以求出对应的弧线长度t=2*asin(0.5*L/mid)*mid,再与LL比较,若t<LL,说明半径取大了,故r=mid,继续二分. #include<iostream> #include<cstdio> #include&

POJ 题目1905 Expanding Rods(二分,数学几何)

Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12827   Accepted: 3311 Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. Whe

POJ 1905(expanding rods)

[题意描述] 本题就是给定一个圆棒的热膨胀系数以及膨胀的温度,求最后变弯后中心点与原来中心点的距离. [思路分析] 几何+二分: 根据公式我们就可以利用二分进行查找了,当然二分是有技巧的,我们由于是double型数据,我们需要在设置循环条件时不能用high-low>0(会陷入系循环)而是需要设置精度esp(1e-5)写成high-low>esp就可以了. [AC代码] #include<iostream> #include<math.h> #include<iom