Unverified Commit 72938517 authored by ShuYuMo2003's avatar ShuYuMo2003 Committed by GitHub
Browse files

修改一处未完善的地方

修改一处未完善的地方
parent d850117d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ bool cmp(const string& s, const string& t) {

一般采取的方法是对整个字符串先预处理出每个前缀的哈希值,将哈希值看成一个 $b$ 进制的数对 $M$ 取模的结果,这样的话每次就能快速求出子串的哈希了:

令 $f_i(s)$ 表示 $f(s[1..i])$ ,那么 $f(s[l..r])=f_r(s)-f_{l-1}(s) \times b^{r-l+1}$ ,其中 $\frac{1}{b^{l-1}}$ 可以预处理出来,用 [乘法逆元](../math/inverse.md) 或者是在比较哈希值时等式两边同时乘上 $b$ 的若干次方化为整式均可
令 $f_i(s)$ 表示 $f(s[1..i])$ ,那么 $f(s[l..r])=f_r(s)-f_{l-1}(s) \times b^{r-l+1}$ ,其中 $b^{r-l+1}$ 可以预处理出来。

这样的话,就可以在 $O(n)$ 的预处理后每次 $O(1)$ 地计算子串的哈希值了。