浮点数二分模板
int fbarry(double l , double r)
{
while(r-l>INT_MIN)//INT_MIN适具体题目而定,一般是样例*10^3
{
double mid=(l+r)/2;
if(check(mid)) l=mid;//这里的l=mid以及下面的r=mid 适具体情况任意
else r=mid;
}
return l;
}
整数二分模板
int abarry(int l,int r)
{
while(l<r)
{
int mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid+1;
}
return l;
}
int bbarry(int l,int r)
{
while(l<r)
{
int mid=(l+r+1)/2;
if(check(mid)) l=mid;
else r=mid-1;
}
return l;
}
整数二分与浮点数二分的不同点:
- 浮点数二分不需要考虑边界问题,整数二分需要考虑边界问题
- 整数二分中也有两种不同的写法,需要加以考虑。