最大值最小化
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;
}
}
判断可行性
//这里已经得到l
if(ok(l))
{
yes;
}
else
{
no;
}
LIS不下降里的二分
int Search(int num,int low,int high)
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(num>=b[mid]) low=mid+1;
else high=mid-1;
}
return low;
}