广告:
#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;
对于答案的输出
我们发现因为精度损失,所以导致末尾舍去的时候会出现误差,这个时候应该灵活的减去或者增加

博客分享了POJ1064问题的解决方案,利用二分查找来确定小棒能分成的最大长度。文章讨论了在处理精度问题时的心得,包括如何判断无解、设置eps值、避免误判以及精确输出答案的方法。同时,作者提醒读者在编程竞赛中,如POJ,需要注意不同编译器对精度的影响。
最低0.47元/天 解锁文章
5051

被折叠的 条评论
为什么被折叠?



