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