zoukankan      html  css  js  c++  java
  • 二分总结

    二分总结

    参考链接

    • 左闭右开
    • 求下界 上界用下界转化
    • 左右区间的变化

    重点是左右区间怎么扩张?

    求第一个大于等于3的位置(蓝色右边界取不到,紫色左边界取得到)

    img

    \(a[mid]=3\),右边必定都是\(\geq3\)的,所有要把紫色最大限度扩张\(last=mid\),即更新后的\(last[last,last_0]\geq3\)

    img

    \(a[mid]=0\),左边必定是\(<3\)的,所以要最大限度扩张\(first=mid+1\),即更新后的\([first_0, first)<3\)

    img

    \(a[mid]=3\),右边必定是\(\geq3\),所以要最大限度扩张\(last=mid+1\),及更新后的\([last,last_0]\geq3\)

    img

    \([frst,last)\)为空,不满足循环条件,且\(first\)\(last\)重合。返回任意值即可。

    while(l < r) {
        int mid = l + (r - l) / 2;
        if (a[mid] < value)
            l = mid + 1;
        else 
            r = mid;
    }
    
    埋骨何须桑梓地,人生无处不青山
  • 相关阅读:
    hh
    SDUT 3923 打字
    最短路
    阶乘后面0的个数(51Nod 1003)
    大数加法
    Biorhythms(中国剩余定理)
    usaco-5.1-theme-passed
    usaco-5.1-starry-passed
    usaco-5.1-fc-passed
    usaco-4.4-frameup-passed
  • 原文地址:https://www.cnblogs.com/ACMerszl/p/15640557.html
Copyright © 2011-2022 走看看