【字符串】字符串多项式哈希

哈希的错误概率

常见的大质数:1000000007,998244353,19260817
不常见的大质数:32582657, 37156667, 42643801, 43112609(梅森质数)

一般取模数为 1e9+7 或者998244353,BASE值选233或者311。

当n为1e6时,模数在1e9量级会达到1/1000的错误,并不是可以忽略不计的。所以可以同时选用两个哈希值去比较(或者用快速乘等方法防溢出后扩大模数范围,但这样比用两个哈希值去做要蠢)。

子串哈希值

多项式哈希的话,可以给[1,r]的哈希值减去[1,l-1]的哈希值的 \(B^(r-l+1)\)

可以解决的问题

最长回文子串

预处理正着和倒着的哈希,然后枚举中心并二分出以此为中心的最长长度(写起来不如manacher算法方便)。

posted @ 2020-09-15 16:12  purinliang  阅读(464)  评论(0编辑  收藏  举报