C++ 代码模板:整数二分

// 区间 [l, r] 被划分成 [l, mid] 和 [mid + 1, r] 时使用
int bisearch_1(int l int r)
{
    while ( l < r )
    {
        int mid = l + r >> 1;
        if ( check(mid) ) r = mid;    // check()判断mid是否满足性质
        else l = mid + 1;
    }
    return l;
}

// 区间 [l, r] 被划分成 [l, mid - 1] 和 [mid, r] 时使用
int bisearch_2(int l, int r)
{
    while ( l < r )
    {
        int mid = l + r + 1 >> 1;
        if ( check(mid) ) l = mid;
        else r = mid - 1;
    }
    return l;
}

上一篇:【算法】二分——习题集


下一篇:haproxy 基于 hdr 实现调度