算法 | 莫队算法

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

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

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

- 阅读剩余部分 -

数据结构 | 可持久化线段树以及主席树

可持久化数据结构:总是可以保留每一个历史版本的数据结构。

可持久化线段树:可以保存每一次操作的历史版本的线段树

可持久化权值线段树 (主席树):可以保存每一次操作的历史版本的权值线段树

- 阅读剩余部分 -

数据结构 | 归并树

归并树 (Merge Sort Tree): 归并树是线段树和归并排序的合成,它利用线段树将归并排序的每一步都记录下来。

  • 查找区间 $[l,r]$ 内的大小范围在 $[a,b]$ 的数的个数(类似条件均可查找)
  • 查找区间 $[l,r]$ 内第 $k$ 大的数

- 阅读剩余部分 -