一般来求LCA有3种方法 1.倍增 2.RMQ+欧拉序 3.tarjan(离线) 本文将倍增求lca 这个算法是很常见很常见的 也是较好理解的 (我也不明白假期学长讲的时候我为什么死活都不明白 自闭qwq 对不起学长qwq 明明学长讲的是最好的qwq 想学长了qwq) 一、基础概念 LCA定义: L ...
分类:
其他好文 时间:
2019-03-26 01:29:18
阅读次数:
483
题目简述: 给出n个数q个询问。对于query(a,b),输出区间(a,b)的数的最小值;对于shift(a0,a1,a2,......,an),则将第a1个数的值赋给a0,第a2个数赋给a1......,第an个数赋给an 1,第a0个数赋给an 主要思路:~~三叉~~ 线段树 (单点修改,区间求 ...
分类:
其他好文 时间:
2019-03-23 01:01:48
阅读次数:
148
"$\verb|Luogu 3793 由乃救爷爷|$" rmq,数据随机 $n,\ m\leq 2\times10^7$ lxl ST表 分块,大小设为 $x$ 预处理每个块两端到块内每个点的前缀 $\max$ 和后缀 $\max$ 预处理块间ST表 数据随机 就成了期望 $O(n)$ 的rmq 重 ...
分类:
其他好文 时间:
2019-03-03 09:28:26
阅读次数:
167
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。 输出格式: ...
分类:
其他好文 时间:
2019-03-01 22:19:02
阅读次数:
217
"题目链接 $Click$ $Here$" 真的好麻烦啊。。事实证明,理解是理解,一定要认认真真把板子打牢,不然调锅的时候真的会很痛苦。。(最好是八分钟能无脑把$SA$码对的程度$QAQ$) 这个题最开始我想的是$RMQ$遍历每一个子区间,但是意识到复杂度是$O(N^2)$然后就$GG$了。怎么说呢 ...
分类:
其他好文 时间:
2019-02-26 17:35:40
阅读次数:
180
对于RMQ这种静态最值询问, 用线段树的话查询过慢, 一般用ST表预处理后O(1)查询, 下以最大值查询为例, 这里假定$n$不超过5e5 若需要求最大值的下标, 可以这样写 ...
分类:
其他好文 时间:
2019-02-24 21:32:19
阅读次数:
201
ST算法 在RMQ(区间最值问题)问题中,我了解到一个叫ST的算法,实质是二进制的倍增。 ST算法能在O(nlogn)的时间预处理后,用O(1)的时间在线回答区间最值。 f[i][j]表示从i位起的2^j个数中的最大(最小)数,即[i,i+2^j-1]中的最大(最小)值,从其定义中可以看出来。 下面 ...
分类:
编程语言 时间:
2019-02-13 20:52:04
阅读次数:
185
题目大意: 给定一个文本串和一个模式串,求文本串中有多少个连续的子串和模式串相差不超过三个字符。 思路: 算是一道后缀数组的模板题。 直接做lcp,然后遇到匹配不上的就跳,跳的次数不能超过三次。 具体地,将两个字符串连在一起,中间加一个分隔符,然后求出height,用rmq维护height数组的区间 ...
分类:
编程语言 时间:
2019-02-06 12:04:32
阅读次数:
241
题目: 给出k个互不相同的证书组成的序列Ni,判断是否存在4个证书Np、Nq、Nr、Ns(1≤p<q<r<s≤k)使得Nq>Ns>Np>Nr或者Nq<Ns<Np<Nr。 思路: 有两种情况<小、最大、最小、大>、<大、最小、最大、小>,枚举第1个和第4个数,用RMQ查询这两个数之间的最大值和最小值, ...
分类:
编程语言 时间:
2019-02-02 19:14:30
阅读次数:
222
$RMQ(Range Minimum/Maximum Query)$问题是指:对于长度为$n$的数列$A$,回答若干询问$RMQ(A,i,j)(i,j<=n)$,返回数列$A$中下标在$i$,$j$里的最小(大)值,也就是说,$RMQ$问题是指求区间最值的问题。 ...
分类:
其他好文 时间:
2019-01-27 16:39:22
阅读次数:
224