二分板子

供自己查找使用

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;
}//用于查找左边界(范围内最小值

int bsearch_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;
}//用于查找右边界(范围内最大值
或者
while (l<r){
int mid=l+r+1>>1;
if (i/mid<a[i]) r=mid-1;
else l=mid;
}
return l;

 

 

 

posted on 2022-04-03 18:48  zesure  阅读(26)  评论(0编辑  收藏  举报

导航