大雪菜的课(笔记)
基础算法(一)
2.二分
(1).整数二分
模板(整数二分算法模板 —— 模板题 AcWing 789. 数的范围):
bool check(int mid) {/* ......*/}
int bsearch1(int q[],int l,int r){
while(l<r){
int mid=l+r>>1;
if(check(q[mid])) r=mid;
else l=mid+1;
}
return l;
}
int bsearch2(int q[],int l,int r){
while(l<r){
int mid=l+r+1>>1;
if(check(q[mid])) l=mid;
else r=mid-1;
}
return l;
}
AcWing789. 数的范围
给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。
对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。
如果数组中不存在该元素,则返回“-1 -1”。
输入格式
第一行包含整数n和q,表示数组长度和询问个数。
第二行包含n个整数