突然想到的一个 规避 SA 中 height 数组闭开区间分类讨论的方法
查看原帖
突然想到的一个 规避 SA 中 height 数组闭开区间分类讨论的方法
116137
嘉然小姐的狗楼主2020/9/17 10:29

hjh_j 倍增,即定义新的数组 hjh'_j 使得:

  • h2j=h'_{2j} = \infty
  • h2j1=hjh'_{2j - 1} = h_j

查询时转化为区间 [2rnka+1,2rnkb+1][2\text{rnk}_a + 1, 2\text{rnk}_b + 1] 的最小值。这里是闭合区间,可以省去一些麻烦的讨论。

数组长度由 nn 变为 2n+12n + 1

例如:

    1   2   3   4   5   6   7   8   9
h:  h1  h2  h3  h4
h': inf h1  inf h2  inf h3  inf h4  inf

查询排名为 2,42, 4 的后缀的 lcp\text{lcp},则我们可以查询 (2,4](2, 4] 中的 min{hi}\min\{h_i\};这相当于查询 [2×2+1,2×4+1]=[5,9][2 \times 2 + 1, 2 \times 4 + 1] = [5, 9] 中的 min{hi}\min\{h'_i\}

2020/9/17 10:29
加载中...