二分法三模板(自用)

2024-01-08 13:21:05

?最小的值 &&?最前面的值

int l=1,r=n;
while(l<r){
    int mid=l+r>>1;  //左偏
    if(check(mid)) r=mid; //check判断mid是否满足性质
    else l=mid+1; 
}

最大的值? && 最后面的值

int l=1,r=n;
while(l<r){
    int mid=l+r+1>>1;  //右偏
    if(check(mid)) l=mid;
    else r=mid-1;
}

浮点二分

while(r-l>1e-5){   //精度控制
    double mid=(l+r)/2;
    if(check(mid)) l=mid;
    else r=mid;
}

文章来源:https://blog.csdn.net/2302_80585579/article/details/135437625
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。