终极二分万能模板

终极二分万能模板

① 整数域二分

情况一:

适用于 \(.....V000000\) \(( . 表示false, 0 表示true)\)

image

int bsearch_1(int l, int r)
{
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid)) r = mid;
        else l = mid + 1;
    }
    return l;
}

情况二:

适用于 \(000000V......\) \(( . 表示false, 0 表示true)\)

image

while (l < r)
    {
        int mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    return l;

② 实数域二分

double l = -100, r = 100;
    while (r - l > 1e-8)//精度
    {
        double mid = (l + r) / 2;
        if (check(mid)) r = mid;
        else l = mid;
    }
posted @ 2021-07-29 21:52  不会飞的小飞龙  阅读(60)  评论(0编辑  收藏  举报
Live2D