整数二分模板
//把区间划分为[l, mid] [mid + 1, r]
void binary_1(int l, int r){
while(l < r){
int mid = l + r >> 1;
if(check(mid)){
r = mid;
}else{
l = mid + 1;
}
}
}
//把区间划分为[l, mid - 1] [mid, r]
void binary_2(int l, int r){
while(l < r){
int mid = l + r + 1 >> 1;
if(check(mid)){
l = mid;
}else{
r = mid - 1;
}
}
}
具体使用哪个需要考虑check
后,区间被划分成什么情况。