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、 后缀数组

  • 相关阅读:
    学习Linux二(创建、删除文件和文件夹命令)
    合理的需求
    两种事件触发的jquery导航菜单
    JS中this关键字
    Hibernate的session问题
    JQUERY图片特效
    学习Linux一(安装VMware和Ubuntu)
    A标签跳转问题
    WEBSERVICE简介
    IE下设置Cursor的一点记录
  • 原文地址:https://www.cnblogs.com/Macaulish/p/6492101.html
Copyright © 2011-2022 走看看