三种常见的二分答案模板

最大值最小化

while(l<r)
{
    int mid=(l+r)>>1;
    if(check(mid))
    {
        r=mid;
    }
    else
    {
        l=mid+1;
    }
}

最小值最大化

while(l<r)
{
    int mid=(l+r+1)>>1;//注意这里是l+r+1
    if(check(mid))
    {
        l=mid;
    }
    else
    {
        r=mid-1;
    }
}

小数二分模版

while(r-l>eps)//eps为精度
{
    int mid=(l+r)>>1;
    if(check(mid))
    {
        r=mid;
    }
    else
    {
        l=mid;
    }
}
发布了10 篇原创文章 · 获赞 2 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/STL_CC/article/details/104792693