RMQ
小胡同的诗
千里之行,始于足下
展开
-
RMQ问题(ST表)
算法描述ST表是根据倍增的思想设计的基于动态规划的做法,优点是能O(1)O(1)O(1)地查询,缺点是不能像线段树那样支持修改。关于预处理:枚举2的k次幂的区间长度,然后枚举起点将区间一分为2去求最大值关于查询:让两个子区间头和尾重叠分别接在待查区间的头和尾,然后尽可能的让区间长度j在n内大,做法是log2nlog2^nlog2n向下取整,显然最极限情况是两个子区间头尾相接没有重叠,其...原创 2019-08-19 16:10:49 · 173 阅读 · 0 评论 -
树上最近公共祖先(欧拉序+RMQ)
算法描述根据上一个博客介绍的dfs序以及欧拉序能够把树上的点转为线性的区间点,从而可以用区间的数据结构去维护。根据欧拉序的定义,我们会发现树上任意两点的第一次出现位置之间必然夹带着lca的点,至于为什么可以画图理解一下,因为我们生成这个欧拉序时每次回溯就加一个点,而任意两点之间的搜索树一定是从lca开始往下搜,然后回溯再转而去搜另外一个点,所以lca就生成再两点的时间戳之间了。于是我们维护完欧...原创 2019-08-21 09:05:59 · 411 阅读 · 0 评论