算法基础倍增本页总览倍增概述参考资料 倍增 - OI Wiki 简介 倍增(Binary Lifting)的核心思想是:预处理以 222 的整次幂为步长的状态,然后将任意目标分解为若干 222 的幂次之和,逐段合并得到答案。这利用了「任意非负整数均可用二进制表示」这一性质。 预处理阶段,设 f(i,x)f(i,x)f(i,x) 表示从状态 xxx 走 2i2^i2i 步后的结果,则递推关系为: f(i,x)=f(i−1,f(i−1,x))f(i,x)=f(i-1,f(i-1,x))f(i,x)=f(i−1,f(i−1,x)) 预处理复杂度为 O(nlogn)O(n\log n)O(nlogn),每次查询 O(logn)O(\log n)O(logn)。 应用 详见 ST 表。 详见 最近公共祖先(LCA)。 例题 题面code洛谷 P3865 【模板】ST 表 && RMQ 问题给定一个长度为 NNN 的数列,和 MMM 次询问,求出每一次询问的区间内数字的最大值。 题面倍增树链剖分洛谷 P3379 【模板】最近公共祖先(LCA)给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。