zoukankan      html  css  js  c++  java
  • 【以前的空间】倍增

    一、 在变化规则相同的情况下加速状态转移;

    1、 快速幂

    2、 推广,满足两个规则即可:

    ① 每次的变化规则必须相同;

    ② 变化规则必须满足结合律。

               可用于减少乘法个数或者加法个数

    二、 加速区间操作。

            在区间操作中运用倍增思想的一般模式:

    预处理:

    对于区间中每一个点A,记录[A,A+20-1],[A,A+21-1],[A,A+22-1],……[A,A+-1] ,这(+1)个区间的性质。在记录的过程中,按照区间长度依次求解(也可以按照点的顺序求解,下文中求树上最近公共祖先的例题中将会有所介绍)。设要求[A,A+22i-1]的性质,则可以通过已知结果[A,A+2i-1]与[A+2i, (A+2i)+ 2i-1]得到有关性质。

    取用:去区间[A,B]

    1、 区间的重叠对于所需结果无影响,可用[A,A+log2(B-A+1)-1]与[B-log2(B-A+1)+1,B]区间的共同结果。

    2、 如果区间的重叠对于所需结果有影响,可用将区间分为长度为log2(B-A+1)、log2(B-A+1)-1、log2(B-A+1)-2、……1个区间。

    1、 St算法

    2、 Lca倍增写法

    3、 后缀数组

  • 相关阅读:
    BZOJ BLO 1123 (割点)【双连通】
    P4291 [HAOI2008]排名系统
    P3165 [CQOI2014]排序机械臂
    P3224 [HNOI2012]永无乡
    P1169 [ZJOI2007]棋盘制作
    P2303 [SDOi2012]Longge的问题
    P2216 [HAOI2007]理想的正方形
    P2473 [SCOI2008]奖励关
    P2617 Dynamic Rankings
    P2518 [HAOI2010]计数
  • 原文地址:https://www.cnblogs.com/Macaulish/p/6492101.html
Copyright © 2011-2022 走看看