字符串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 · 166 阅读 · 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 · 158 阅读 · 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 · 143 阅读 · 0 评论