分治模板

int search()
{
    int l=1;r=L,mid,ans=-1;
    // l 左 r 右 mid 二分 ans 答案 
    while(l<=r){//左<=右 
        mid=(l+r)>>1;//除以2,这样比较快 
        if(check(mid)) ans=mid r=mid-1;
        //表示不合法的解个数是否大于上线
        //check 自己设的检查是否符合的函数    
        else l=mid+1;
    }
    return ans;
 } 
//这份代码是最小化答案的

//如果要最大化答案,把r = mid - 1和l = mid + 1换一下就好
原文地址:https://www.cnblogs.com/lcezych/p/10533599.html