永远不能变的二分

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

int mid_div(int l,int r)
{
    int left=l,right=r;
    while(left<right-1)//注意!这里若left==right-1,就死循环了
    {
        mid=(left+right)/2;
        if(dfs(mid,1))
          left=mid;
     
else right=mid;
  }
  
return left;
}

 

posted @ 2017-08-13 23:05  Captain_fcj  阅读(150)  评论(0编辑  收藏  举报