二分模板
二分两种写法
-
保留下界 但是忽略左答案
while(l+1<r) { int mid=(l+r)>>1; if( check(mid) ) r=mid;//错误点1 else l=mid; } return r; -
保留上界 忽略右答案
while(l+1<r) { int mid=(l+r)>>1; if( check(mid)) l=mid;//错误点1 else r=mid; } return l; -
二分查找的时候 是 >= 要有等号
由上下界决定是哪一种写法
二分两种写法
保留下界 但是忽略左答案
while(l+1<r)
{
int mid=(l+r)>>1;
if( check(mid) ) r=mid;//错误点1
else l=mid;
}
return r;
保留上界 忽略右答案
while(l+1<r)
{
int mid=(l+r)>>1;
if( check(mid)) l=mid;//错误点1
else r=mid;
}
return l;
二分查找的时候 是 >= 要有等号
由上下界决定是哪一种写法