From 20cb4effafa87a99d554b4b7f2083f69c473ac95 Mon Sep 17 00:00:00 2001 From: ksyx <1175143532@qq.com> Date: Wed, 13 Feb 2019 20:05:45 +0800 Subject: [PATCH] Fix Bug --- 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 e0d261c3..d0d9fdb7 100644 --- a/docs/string/sa.md +++ b/docs/string/sa.md @@ -355,7 +355,7 @@ int lcp(int i, int j) { 这个算法的基础是,我们要计算相邻的排序后的后缀的 LCP。换言之,我们将会构造一个数组 $\text{LCP}[0\dots n-2]​$,其中 $\text{LCP}[0\dots n-2]​$ 等于 $p[i]​$ 和 $p[i+1]​$ 的 LCP 长度。这个数组将使得我们能够计算出字符串中任意两个相邻后缀的 LCP。拓展到任意两个后缀,可以从这个数组中得到。其实,查询后缀 $p[i]​$ 和 $p[j]​$ 的 LCP 答案就是 $min\{ lcp[i],~lcp[i+1],~\dots,~lcp[j-1]\}​$。 -因此当我们算出 $\text{LCP}$ 后问题就简化成了计算 $RMQ$,不同的算法有不同的时间复杂度。 +因此当我们算出 $\text{LCP}$ 后问题就简化成了计算 $\text{RMQ}$,不同的算法有不同的时间复杂度。 所以我们的主要任务就是构造 $\text{LCP}$ 数组。我们将使用 Kasai 算法,该算法能在 $O(|S|)$ 时间复杂度内构造这个数组。 -- 2.11.0