用子串哈希找位置
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。
补全 get(l, r):返回 [l, r) 这一段的哈希。补全后用它找出 P 在 T 里的全部位置。
(本题用 g++ -std=c++17 -O0 编译。)
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。
补全 get(l, r):返回 [l, r) 这一段的哈希。补全后用它找出 P 在 T 里的全部位置。
(本题用 g++ -std=c++17 -O0 编译。)
全部评论