一、二分答案:
在答案可能的范围内[L,R]二分查找答案,检查当前答案是否满足题目的条件要求,根据判断结果更新查找区间。
二、题目类型:
求最大值、最小值、求满足条件的最大值或最小值、最大值中的最小值、最小值中的最大值、靠近的值。
三、模板:yxc
1.求符合条件的最小值:
//求符合条件中的最小值
bool check(int x){}// 检查x是否满足条件
// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用
int sreach(int l,int r)
{
while(l < r)
{
int mid = (l + r) >> 1;
if(check(mid)) r = mid;
else l = mid + 1;
}
return l;
}