我们先考虑一下,如果是个double类型的,那么在二分的过程中,实际上,是一个开区间,而不是整数型时候的闭区间。这样最后的限制条件应该是l - r > 0.0001(取精度)
其他和整数的是一样的。
double lower_bound2(double x,double y)
{
double m;
while(y - x > 0.001)
{
m =(x + y) / 2;
if( judge(m) == true)
{
y = m;
}
else
x = m;
}
return x;
}
下面是一个例题
链接:http://exam.upc.edu.cn/problem.php?id=1549
题意:桐桐要依次经过几个点,每个点都有一个最早到达时间(如果到达的时间比这个早,就要等着。)和一个最晚到达时间(不能比这个时间还晚),以及每个点与前一个点的距离。桐桐依次经过这么几个点。问最