学术计划VOL.1 二分!
2025-10-12 20:30:25
发布于:重庆
二分!
这是Stars_Seeker推出的一个新系列的第一期,希望这个系列能够帮助到刚学习 C++ 或者复习 C++ 却不知道复习哪些的同学们,同时这个系列没有过多的言语和绝美的佳句作者语文不好(,只有透彻的知识awa。
写的这么差的帖子肯定不是AI(
二分的前提:单调性(单调增 单调减 单调不增 单调不减)
二分的思想:每次从中间将区间分成两半 ,每次选择往左走或者向右走 。
二分的复杂度:每次区间长度减半,可以看成是 n 每次除以 2,直到n = 1时候结束 , 这一过程是 O(logn) 。
二分的2种写法:
求符合条件的最左边
while(l<r){
int mid=l+r>>1;
if(check(mid)){
r=mid;
}
else{
l=mid+1;
}
}
求符合条件的最右边
while(l<r){
int mid=l+r+1>>1;
if(check(mid)){
l=mid;
}
else{
r=mid-1;
}
}
二分查找两个函数
lower_bound(a+1,a+1+n,x) 查找大于等于x的第一个位置
upper_bound(a+1,a+1+n,x) 查找严格大于x的第一个位置
返回的都是地址
假如你想要得到下标,可以这么写:
int p=lower_bound(a+1,a+1+n,x)-a; //减去首地址 获得偏移量
找不到的话 返回 a+n+1的地址(我们的范围在下标 1~n, 所以返回n + 1的地址代表找不到)
是的没错,你没有听错,第一期结束了!
二分除了固定的模版其余的重点就是check函数的部分了,因为每道题check都可能不太一样,所以就不花时间去讲了awa,还是那句话:菜就多练,做多了自然就熟了!
下一篇学术计划->
全部评论 21
举报举报举报AIAIAIAIAIAI
6天前 来自 浙江
3(
6天前 来自 重庆
0举报举报举报AIAIAIAIAIAI
昨天 来自 上海
0
一看就不是AI
昨天 来自 新疆
2傻逼
昨天 来自 浙江
1不适隔门
昨天 来自 浙江
1sb
昨天 来自 重庆
1sb
昨天 来自 浙江
1
注意到今天的ABC的C也是二分(((
昨天 来自 浙江
1不过是二分图
昨天 来自 浙江
0%%%
昨天 来自 重庆
0
%%%
6天前 来自 广东
16天前 来自 重庆
1圣经
昨天 来自 上海
0
建议
l+r>>1
改成
l+(r-l>>1)
6天前 来自 江西
1我的习惯就是第一个呦,第二个一般在笔试卷的时候经常出没(
6天前 来自 重庆
0主要第二个防溢出
6天前 来自 江西
0额,第一个通常也不会溢出吧
6天前 来自 重庆
0
但是赞了
6天前 来自 浙江
1哥们字太少了
6天前 来自 浙江
1你猜为什么叫学术计划(
6天前 来自 重庆
2e
6天前 来自 浙江
1所以。。。
6天前 来自 浙江
1
我是这么写的
while(l+1<r){ int mid=l+r>>1; if(check(mid)){ l=mid; } else{ r=mid; } }if(check(r)) cout<<r; else cout<<l;
13小时前 来自 浙江
0别抢我递归哈
14小时前 来自 上海
0过段时间可能要写
14小时前 来自 上海
0
细节发到灌水区
16小时前 来自 浙江
0MC团队招人拉!想在电脑上玩MC,可以进来我们团,里面的作业里有(https://www.acgo.cn/application/1913576045675352064)
16小时前 来自 广东
0d
17小时前 来自 浙江
0d
17小时前 来自 浙江
0压力滚c
17小时前 来自 浙江
0D
昨天 来自 重庆
0woc上榜了
昨天 来自 浙江
0可怜的ppl被我挤下去了(
昨天 来自 重庆
0凭什么挤ppl
昨天 来自 上海
0
%
3天前 来自 浙江
0诶你说他们会不会不知道“>>1”是啥意思
5天前 来自 浙江
0(
5天前 来自 重庆
05天前 来自 重庆
1有可能
昨天 来自 上海
0
d
6天前 来自 重庆
0
有帮助,赞一个