二分 模板

简介: 二分的另一个板子


好久没更新博客了,之前一直在准备比赛,忙着学算法和写题,今天写了一道二分答案的题,发现之前那种二分写法有一丢丢的问题,导致有道题只能过97%的点。

emmm,还是把最经典的二分的板子写在这记录下(这里参考了别的大佬的写法,感谢大佬~)。

二分的两个模板:

//查找左边界 SearchLeft 简写SL
int SL(int l, int r)
{
   
   
    while (l < r)
    {
   
   
        int mid = l + r >> 1;
        if (check(mid)) r = mid; 
        else l = mid + 1; 
    }    
    return l;  //最后r=l
}


//查找右边界 SearchRight 简写SR
int SR(int l, int r) 
{
   
   
    while (l < r)
    {
   
                       
        int mid = l + r + 1 >> 1; //需要+1 防止死循环
        if (check(mid)) l = mid;
        else r = mid - 1; 
    }
    return r;  // 最后r=l
}

每次使用这两个模板的时候,先想是找这个区间的左端点还是还是右端点,然后选择用哪个模板,最后再去写判断条件。
image.png

相关文章
|
4月前
树状数组模板
树状数组模板
33 0
|
3月前
|
Java Python
二分查找模板
二分查找模板
|
4月前
|
Python
{二分模板}
{二分模板}
14 0
|
4月前
线段树模板
线段树模板
40 0
|
12月前
|
机器学习/深度学习
P1873 砍树(二分查找模板)
P1873 砍树(二分查找模板)
92 0
|
SQL 人工智能 开发框架
线段树模板+例题
线段树模板+例题
68 1
二分搜索的三种模板
二分搜索的三种模板
62 0
|
存储 算法
线段树模板与练习
线段树模板与练习
94 0