倍增算法
倍增是枚举的一种特殊方式。
假如我们有一根数轴,要从1000走到0
我:一步步走就行了,一定会到的
ZHX:SB题,29=512,从1000跳512步,还剩488;28=256,从488跳256步,还剩232;27=128,从232跳128步,还剩104;
26=64,从104跳64步,还剩40;25=32,从40跳32步,还剩8;24=16,16>8,不跳;23=8,从8跳8步,完了。
于是ZHX巨佬就用6步到了终点!
假如我们有一根数轴,要从10000000走到0
我:#&^@*&^$@(
ZHX:我8步
我:艹,你怎么这么奆
倍增利用了任意一个数都可以表示为∑2k,每进行一次倍增,所对应的区间就翻了一倍,由此时间复杂度是O(logn)
裸的倍增几乎没有,这是一个精巧的算法,像枚举一样穿插在代码间
但倍增的应用比较有趣:ST表和倍增爬树
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步