二分

整数域上的二分(两种写法任取其一均可)

//第一种
while(l<r)
{
    int mid=l+r>>1;
    if(a[mid]>=x) r=mid;
    else l=mid+1;
}
//第二种
while(l<r)
{
    int mid=l+r+1>>1;//防止死循环
    if(a[mid]<=x) l=mid;
    else r=mid-1;
}

实数域上的二分

一般根据题目要求的精度范围再向下精确2位
比如:题目要求精确到1e-3,我们二分时则要精确到1e-5

while(r-l>eps)//eps=1e-5
{
    double mid=(l+r)/2;
    if(check(mid)) l=mid;//如果mid满足条件
    else r=mid;
}

二分答案转化为判定在我的另外一篇博客<最佳牛围栏>里

上一篇:(Python)Gurobi求解最大流问题


下一篇:RetinaNet——使用Focal Loss解决物体检测中的样本均衡问题