【字符串】字符串多项式哈希
哈希的错误概率
常见的大质数: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算法方便)。