From 0961fb427d2f36c11f87ae67051a0ef781c32fb5 Mon Sep 17 00:00:00 2001 From: ksyx <1175143532@qq.com> Date: Wed, 13 Feb 2019 19:51:02 +0800 Subject: [PATCH] Fix Bugs --- docs/string/sa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string/sa.md b/docs/string/sa.md index a9aae7cb..617feb14 100644 --- a/docs/string/sa.md +++ b/docs/string/sa.md @@ -231,7 +231,7 @@ vector sort_cyclic_shifts(string const& s) { 接下来我们说说如何进行迭代。假设我们已经完成了前 $k-1$ 步,并且计算了 $p$ 数组和 $c$ 数组。我们接下来想在 $O(n)$ 时间复杂度内计算这两个数组在第 $k$ 步的值。因为我们总共执行这个步骤 $O(\log n)$ 次,所以算法的时间复杂度是 $O(n\log n)$。 -为了完成这一目标,我们注意到长度为 $2^k$ 的循环子串包括两个长度为 $2^{k-1}$ 的子串,我们可以使用上一步 $c$ 数组的计算结果在 $O(1)$ 的时间复杂度内通过比较得出。因此,对于两个长度为 $2^k$,起点分别为 $i$ 和 $j$ 的子串,所需的用来比较信息在二元组 $(c[i],c[i+2^{k-1})$ 和 $(c[j],c[j+2^{k-1})$ 中已经全部包含。 +为了完成这一目标,我们注意到长度为 $2^k$ 的循环子串包括两个长度为 $2^{k-1}$ 的子串,我们可以使用上一步 $c$ 数组的计算结果在 $O(1)$ 的时间复杂度内通过比较得出。因此,对于两个长度为 $2^k$,起点分别为 $i$ 和 $j$ 的子串,所需的用来比较信息在二元组 $(c[i],c[i+2^{k-1}])$ 和 $(c[j],c[j+2^{k-1}])$ 中已经全部包含。 $$ \\overbrace{\\underbrace{s_i\\dots s_{i+2^{k-1}-1}}\_{\\text{length} = 2^{k-1},~\\text{class} = c[i]}\\quad\\underbrace{s_{i+2^{k-1}}\\dots s_{i+2^k-1}}\_{\\text{length} = 2^{k-1},~\\text{class} = c[i + 2^{k-1}]} -- 2.11.0