首页 > 代码库 > 永远不能变的二分

永远不能变的二分

二分可以说是我一直以来的痛了,经常不是死循环就是答案错误,今天我终于弄翻了它,正确代码如下:

int mid_div(int l,int r)
{
    int left=l,right=r;
    //left从0还是从1开始都行 
    while(left<=right)
    {
        space=0;
        mid=(left+right)/2;
        if(dfs(mid,1))
        {
            ans=mid;
    //先记录下来,万一后面跳过了,就返回一直很"保守"的ans 
            left=mid+1;//上跳            
        }
        else
            right=mid-1;//下跳 
    }
    return ans;
}

 

永远不能变的二分