今天想到做一点三分的简单题,就看到了这个: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么,