二分姿势

来源:互联网 发布:javascript 取消 bind 编辑:程序博客网 时间:2024/04/27 16:20

牢记二分姿势

左闭右开:

代码

//最小化最大值l=-1,r=n+1;while(l+1<r){    int mid=(l+r)>>1;    if(check(mid))//如果满足条件,尝试缩小答案    r=mid;    else l=mid;}printf("%d",r);//最大化最小值l=0,r=n+1;while(l+1<r){    int mid=(l+r)>>1;    if(check(mid))//如果满足条件,尝试扩大答案    l=mid;    else r=mid;}printf("%d",l);

左闭右闭:

代码

l=-1,r=n+1;while(l<=r){    int mid=(l+r)>>1;    if(check(mid))    {        ans=mid;        l=mid-1;    }    else r=mid+1;}printf("%d",ans);