POJ 1905 Expanding Rods(几何+二分)
2014-09-16 21:39
344 查看
POJ 1905 Expanding Rods(几何+二分)
http://poj.org/problem?id=1905
题意:
一根两端固定在两面墙上的杆 受热弯曲后变弯曲
求前后两个状态的杆的中点位置的距离. 弯曲后的杆可以看成一个圆的弧,而弯曲前的杆可以看成是该弧的弦.
分析:
![](http://img.blog.csdn.net/20140916214123666?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ4MDYwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
假设当前的圆半径为r,且该弧S对应的圆心角为2 θ. h是我们要求的距离.那么我们可以推过上图得到下面3个方程:
(1)θr = 1/2*s (弧/圆周长==弧圆心角/2π)
(2)sinθ= 1/2*L/r (正弦定理)
(3)勾股定理 r^2 – ( r – h)^2 = (1/2*L)^2
那么化简上述公式可得:
![](http://img.blog.csdn.net/20140916213934625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ4MDYwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
那么我们可以通过二分h的长度(h的范围是[0,0.5L],该范围值也不好证明)来计算r的值,然后通过第二个等式来验证r的值是否正确. 如果当前通过h的值算出的r值使得等式(2)右边小于s,那么h值应该更大.
否则L值应该更小.
注意:
二分有个很重要的前提就是单调,本题需要证明等式(2)右边是关于r单调递增的且要证明h与r也是成正比的关系.
下面这个大神把上面的单调关系证明了,还带图解:
/article/2633833.html
AC代码:
http://poj.org/problem?id=1905
题意:
一根两端固定在两面墙上的杆 受热弯曲后变弯曲
求前后两个状态的杆的中点位置的距离. 弯曲后的杆可以看成一个圆的弧,而弯曲前的杆可以看成是该弧的弦.
分析:
假设当前的圆半径为r,且该弧S对应的圆心角为2 θ. h是我们要求的距离.那么我们可以推过上图得到下面3个方程:
(1)θr = 1/2*s (弧/圆周长==弧圆心角/2π)
(2)sinθ= 1/2*L/r (正弦定理)
(3)勾股定理 r^2 – ( r – h)^2 = (1/2*L)^2
那么化简上述公式可得:
那么我们可以通过二分h的长度(h的范围是[0,0.5L],该范围值也不好证明)来计算r的值,然后通过第二个等式来验证r的值是否正确. 如果当前通过h的值算出的r值使得等式(2)右边小于s,那么h值应该更大.
否则L值应该更小.
注意:
二分有个很重要的前提就是单调,本题需要证明等式(2)右边是关于r单调递增的且要证明h与r也是成正比的关系.
下面这个大神把上面的单调关系证明了,还带图解:
/article/2633833.html
AC代码:
#include<cstdio> #include<cstring> #include<cmath> using namespace std; const double eps=1e-5; double L,C,n,S; double get_s(double h) { double r= (4*h*h+L*L)/(8*h); return 2*r*asin(L/(2*r)); } int main() { while(scanf("%lf%lf%lf",&L,&n,&C)==3) { if(L<0 && n<0 && C<0) break; S=(1+n*C)*L; double low=0,high=L/2; while(high-low>eps) { double mid=(low+high)/2; if(S>get_s(mid)) low=mid; else high=mid; } printf("%.3lf\n",high); } return 0; }
相关文章推荐
- POJ - 1905-Expanding Rods-数论-二分&几何
- POJ-1905-Expanding Rods【二分】【计算几何】
- POJ 1905 Expanding Rods 二分答案几何
- POJ 1905 Expanding Rods几何题,二分
- POJ 题目1905 Expanding Rods(二分,数学几何)
- poj1905 Expanding Rods(二分+几何)
- POJ1905 Expanding Rods(计算几何推公式+二分)
- POJ 1905 Expanding Rods 几何加二分
- poj_1905 Expanding Rods(二分求单调函数)
- 【POJ1905】Expanding Rods 二分答案+推公式
- POJ 1905(几何+二分)
- 【二分】POJ1905[Expanding Rods]题解
- poj1905--Expanding Rods(二分,精度伤不起啊)
- POJ 1905 Expanding Rods(二分)
- POJ-1905 Expanding Rods 解题报告(二分) 金属材料的膨胀
- POJ1905-Expanding Rods-二分答案
- POJ 1905 Expanding Rods 二分加数学公式的推导
- poj-1905 Expanding Rods (二分)
- poj 1905 Expanding Rods (二分查找)
- POJ 1905 Expanding Rods (二分)