算法 | 莫队算法

莫队算法适用于:若存在一个长度为 $n$ 的序列,对于序列上的 $m$ 个区间询问问题,如果一个区间答案能够在 $O(1)$ 转移到相邻区间的答案,那么可以通过莫队算法在 $O(n\sqrt m)$ 的复杂度求出所有询问。

对于区间 $[l,r]$,它的相邻区间定义为:

  • $[l-1,r]$
  • $[l+1,r]$
  • $[l,r-1]$
  • $[l,r+1]$

- 阅读剩余部分 -

算法 | Manacher

Manacher (manachar, 马拉车):在 $O(n)$ 时间内计算一个字符串内所有回文子串的算法。

- 阅读剩余部分 -

算法 | 字符串哈希

字符串哈希:定义一种将字符串映射到一个整型哈希值的函数 $f(\cdot)$,我们希望这个函数可以方便地帮我们判断两个字符串是否相等。

- 阅读剩余部分 -

算法 | 树链剖分

树链剖 (pōu) 分:树链剖分用于将树分割成若干条链的形式,使它组合成线性结构,然后就可以用其他的数据结构(例如线段树)维护信息。

- 阅读剩余部分 -

算法 | 最近公共祖先

最近公共祖先 (LCA, Lowest Common Ancestor):树中两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。

- 阅读剩余部分 -