整数二分模板

整数二分模板

//把区间划分为[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后,区间被划分成什么情况。

你可能感兴趣的:(数据结构基础)