整数三分(模板)

如果是小数的话不要用EPS,直接循环上1000次。。。

这里是整数,需要注意三分的过程是取不到端点值的,所以需要一开始特判端点,而一开始特判端点又会在l>r时出错,所以也需要特判l>r的情况。

ll bin3(int l,int r)
{
    if(l>r) return -INF;
    ll res=max(f(l),f(r));
    while(l<=r){
        int m=(l+r)>>1,mm=(m+r)>>1;
        ll fm=f(m),fmm=f(mm);
        if(fm<=fmm) l=m+1;
        else r=mm-1;
        res=max(res,max(fm,fmm));
    }
    return res;
}
View Code

 

posted @ 2016-03-04 17:34  __560  阅读(831)  评论(0编辑  收藏  举报