zoukankan      html  css  js  c++  java
  • 倍增算法

    倍增是枚举的一种特殊方式。

    假如我们有一根数轴,要从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表和倍增爬树

  • 相关阅读:
    page指令
    CMD设IP
    JDBC的几种驱动
    Python的闭包使用
    1189. 扫雷游戏
    1287. 递增的三元子序列
    Pip安装使用国内源的两种方法
    Python Classmethod和Staticmethod函数
    Git提交远程仓库
    Git分支管理
  • 原文地址:https://www.cnblogs.com/soledadstar/p/11595237.html
Copyright © 2011-2022 走看看