广告:
#include <stdio.h>
int main()
{
puts("转载请注明出处[vmurder]谢谢");
puts("网址:blog.youkuaiyun.com/vmurder/article/details/44347241");
}
题意:
多组数据,n个小棒,分成m段,最长多长?
不能短于0.01,如果分不出来,输出”0.00”
题解:
满足单调性,来二分吧。
心得:
来,我们看着代码说话。
判无解的处理
首先最多能分多少段开了long long。
long long maxd,m;
然后处理的时候因为精度损失,所以加了eps
maxd+=(int)(a[i]*100.0+eps);
eps
因为处理两位,所以至少应该开4位吧,然后因为其它的一些东西,所以我最终开了八位
#define eps 1e-8
避免出现无解而误判的情况
右边界的设置减了eps,事实上这里并不需要进行此项判断。
double l=0.01,r=mx-eps,mid;
对于答案的输出
我们发现因为精度损失,所以导致末尾舍去的时候会出现误差,这个时候应该灵活的减去或者增加