给定一个串 \(A\) 和一个串 \(B\)。问 \(B\) 的所有后缀和 \(A\) 的 \(lcp\)。 \(1 \le |A|,|B| \le 10^7\) 首先考虑解决一个简单一点的问题:当 \(A=B\) 的时候的答案。 与 KMP 类似,我们需要求一个数组 \(nxt ...
这篇总结所有的字符串都是以 为下标起点 Z函数 ExKMP 对于一个字符串 S 我们规定一个函数 Z i 表示 S 与 S i...n 的 LCP 最长公共前缀 的长度。 即 S .....Z i 与 S i...i Z i 相等 先说构造 Z 函数,再说 Z 函数的应用 首先考虑暴力的构造 时间复杂度 O n 这就是一个根据定义的模拟,但是显然 O n 的时间复杂度有些不太优秀,所以考虑优化: ...
2021-03-05 19:22 0 271 推荐指数:
给定一个串 \(A\) 和一个串 \(B\)。问 \(B\) 的所有后缀和 \(A\) 的 \(lcp\)。 \(1 \le |A|,|B| \le 10^7\) 首先考虑解决一个简单一点的问题:当 \(A=B\) 的时候的答案。 与 KMP 类似,我们需要求一个数组 \(nxt ...
title: 前缀函数与KMP算法 date: 2020-08-05 tags: 算法 字符串 OI categories: 技术 因为大二的时候全程划水,导致我对KMP只听说过名字。老师似乎都没展开讲,我记得是有一节下课时说这个算拓展内容,可以自己回去 ...
一个小约定:下文中的所有字符串下标都从 \(0\) 开始。 #1.0 什么是 Z-函数 对于一个长度为 \(n\) 的字符串 \(S\),定义函数 \(z(i)\) 表示 \(S[i,n-1]\),即以 \(S[i]\) 开头的后缀,与 \(S\) 的最长相同前缀(\(\texttt ...
题面 洛谷P5410 【模板】扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\)、\(b\) 与 \(a\) 的每一个后缀的 LCP 长度数组 \(p\)。 数据范围:\(1\le |a|,|b ...
积性函数前缀和-个人总结 【写在前面】 用了一个多星期将这部分大致弄懂了,东西太多,有很多技巧,自己重新写了一下,记录自己的理解。内容与原文基本一致,在其基础上加上了一些我感觉比较重要的但他没有详细说明的东西。以下都是我逐字打出来的。如果有什么错误,请指出。——Simon 前置技能里面 ...
今天软院校赛,有一道H题非常的神,所以记下来。题意转化了之后就是求欧拉函数的前缀和。自然的想法是O(n)的线性预处理可以求出前n个数的欧拉函数,又或者是O(sqrt(n))的预处理求出单个数的欧拉函数。但是题目要求的是前n(n<=10^9)个数欧拉函数的前缀和。于是我就觉得这是没法 ...
KMP:在主串S中找子串T的位置KMP算法的时间复杂度O(|S|+|T|)。 1 2(来着算法竞赛进阶指南) 扩展KMP: 给定串S,和串T,设S的长度为n,T的长度为m,求T与S的每一个后缀(包括 ...
A[i]往前和B的前缀匹配的最大匹配长度,记为ex[i](或者说,ex[i]为满足A[i-z+1..i] ...