【自用】POJ1064 Cable master 且来说说卡精度的心得

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

广告:

#include <stdio.h>
int main()
{
    puts("转载请注明出处[vmurder]谢谢");
    puts("网址:blog.csdn.net/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;

对于答案的输出

我们发现因为精度损失,所以导致末尾舍去的时候会出现误差,这个时候应该灵活的减去或者增加

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值