二分模板
// 区间被分为[l ,mid][mid+1,r]时
public void bssearch_1(int[] a,int l,int r){
while (l < r){
int mid = (l+r)/2;
if(check(mid)) r = mid;
else l = mid+1;
}
}
//区间被分为[l ,mid-1][mid,r]时
public void bssearch_1(int[] a,int l,int r){
while (l < r){
int mid = (l+r+1)/2;
if(check(mid)) l = mid;
else r = mid-1;
}
}
整数二分需要注意边界问题,mid是否在答案范围内,答案必须在区间内。
浮点数二分只要差值在一个很小的范围内即可判为找到。
例题: