二分模板

发布时间 2023-09-27 19:46:11作者: 爱努力的人最幸福

// 区间[l,r]被划分成[l,mid]和[mid+1,r]时使用
int baserch_1(int l,int r)
{
while(l<r)
{
int mid = l + r>>1;
if(check(mid)) r = mid; //check()判断mid是否满足性质
else l = mid +1;
}
return l;
}

// 区间[l,r]被划分成[l,mid-1]和[mid,r]时使用
int baserch_2(int l,int r)
{
while(l<r)
{
int mid = l + r + 1 >>1;
if(check(mid)) l = mid;
else r = mid - 1;
}
return l;
}