题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1905
题意简述:给定n,l,c。n、c是常数,l是木板的初始长度,求弯曲后木板中心的间距。
解题思路:二分枚举间距对应的角度求解,其关键在于推出公式。
由公式 弦长 = 2*r*sin(弧长/2*r)
即b=2*r * sin(a / (2r)), a为弧长,b为弦长
即b/a=2r/a*sin(a/(2r))
角a/2r相当于a*pi / 2r*pi 即弧角=弧度=弧长/半径
推理可知范围在0~pi/2 假设为x=a/(2r),即为弧长一半所对应的圆心角
即b/a=sinx/x
设f(x)=sinx/x,这个函数显然是单调递减的,于是二分贪心求解。
在弦长一半b/2与所求高度result所围成的直角三角形中,由正弦定理得: sin(y)/result=sin(z)/(b/2) ,其中y =(pi-x)/2-(pi/2-x),z=(pi-x)/2
化简为: result=(1 - cos(x)) * b / (2 * sin(x))。
代码: