倍增算法
Posted soledadstar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倍增算法相关的知识,希望对你有一定的参考价值。
倍增是枚举的一种特殊方式。
假如我们有一根数轴,要从1000走到0
我:一步步走就行了,一定会到的
ZHX:SB题,$2^9=512$,从1000跳512步,还剩488;$2^8=256$,从488跳256步,还剩232;$2^7=128$,从232跳128步,还剩104;
$2^6=64$,从104跳64步,还剩40;$2^5=32$,从40跳32步,还剩8;$2^4=16$,16>8,不跳;$2^3=8$,从8跳8步,完了。
于是ZHX巨佬就用6步到了终点!
假如我们有一根数轴,要从10000000走到0
我:#&^@*&^$@(
ZHX:我8步
我:艹,你怎么这么奆
倍增利用了任意一个数都可以表示为$sum 2^k$,每进行一次倍增,所对应的区间就翻了一倍,由此时间复杂度是O(logn)
裸的倍增几乎没有,这是一个精巧的算法,像枚举一样穿插在代码间
但倍增的应用比较有趣:ST表和倍增爬树
以上是关于倍增算法的主要内容,如果未能解决你的问题,请参考以下文章