三分与精度问题

今天想到做一点三分的简单题,就看到了这个:https://vjudge.net/problem/HDU-3400

于是去做这个三分套三分的题,但是不知道为什么,总是WA,然后对拍,发现是哪里存在精度问题,找半天没找出来

最后对比我和AC的代码,发现了这个地方

我的:

double dis(PDD A, PDD B)
{
	return sqrt(pf(A.x - B.x) + pf(A.y - B.y));
}

AC的:

// 计算两点间距离
double dist(Point &a1, Point &a2)
{
    // 加eps,可能测试数据都是int类型开方有误差
    double x = (a2.x-a1.x) * (a2.x-a1.x);
    double y = (a2.y-a1.y) * (a2.y-a1.y);
    return sqrt(x + y + eps);
}

想不通为什么要加上eps,把自己的加上了,就A了

 

后来看一看知乎,知道了:

https://www.zhihu.com/question/36176935

1.eps的大小要合适,一般1e-8就不会错了

2.凡是涉及浮点数之间的比较或者两者之间存在隐性的大小关系(如本题),就要+eps

3.浮点型转整型

后来想一想不是le刚开始要<=ri么,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值