![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串hash
qq_38232157
这个作者很懒,什么都没留下…
展开
-
CH 1806 Matrix (进阶指南,字符串hash)
算法竞赛进阶指南,91页,字符串hash 本题要点: 0、 字符串哈希值,可以有一个字符串的所有的前缀字符串相减得到 h[R] - h[L - 1] * p_pow[R - L + 1]; 1、 求某一个小矩阵 (a * b )是否在 一个大矩阵(n * m)中匹配,求出大矩阵中所有的尺寸为 a * b 的子矩阵 的哈希值, 放在一个 unordered_set 中, 然后后面的 q 次查询,每次在集合中查找是否存在该矩阵的哈希值 2、 当前小矩阵s 从第i行, 第j列开始, 也就是 行数: [i, i原创 2020-06-06 15:31:48 · 160 阅读 · 0 评论 -
CH 1402 后缀数组(进阶指南,字符串hash,二分)
算法竞赛进阶指南,69页, 字符串哈希,二分 本题要点: 1、通过字符串哈希来判断字符串的所有子字符串是否相等; 使用sort 排序,n个字符串排序的比较次数 O(n * log(n)), 长度为n的字符串,比较的次数是n, 如果暴力使用sort ,总的时间复杂度为 O(n^2 * log(n)); 2、如果通过二分法来判断连个字符串是否相等,时间复杂度为 O(log(n)) ,总的复杂度为 O(n * log(n) * log(n)); 对于两个后缀字符串,从下标 p和q开始,计算出其公共前缀的长度为原创 2020-06-05 17:33:22 · 131 阅读 · 0 评论 -
CH 1401 兔子与兔子(进阶指南,字符串hash)
算法竞赛进阶指南,68 页, 字符串哈希 本题要点: 1、 求出字符串 str 的所有的前缀字符串的哈希值,那么,str的所有子串的哈希值都可以在 O(1) 的时间内计算出来 2、 计算公式: 子串区间 [L, R] pre[R] - pre[L - 1] * p^ (R - L + 1) #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int p =原创 2020-06-05 17:26:58 · 138 阅读 · 0 评论