整数二分
while (l < r) while(l < r)
{ {
int mid = l + r >> 1; int mid = l + r + 1 >> 1;
if (check(mid)) r = mid; if(check(mid)) l = mid;
else l = mid + 1; else r = mid - 1;
} }
实数二分
while (r - l > eps) // eps 表示精度,取决于题目对精度的要求
{
double mid = (l + r) / 2;
if (check(mid)) r = mid;
else l = mid;
}
ps:前辈的经验,可以完美的避开死循环