C++二分法模板
当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;
1.整数二分
int left = 0,ri =maxn;int ans = -1;
while (left <= ri)
{
int mid = (left + ri)/2;
if( check(mid) ) ans=mid,left = mid+1;
else ri= mid-1;
}
cout << ans <<endl
2.实数二分
double L = 0; // 左边界
double R = 1e9; // 右边界
for (int _ = 0; _ < 100; _++) {
double M = (L + R) / 2;
if (check(M)) {
L = M;
} else {
R = M;
}
}