概述 参考资料: 刘雅琼PPT讲解kuangbin的博客 给出模板串A和子串B,长度分别为lenAlenA和lenBlenB,要求在线性时间内,对于每个A[i]A[i](0<=i<lenA)(0<=i<lenA) 求出A[i..lenA?1]A[i..lenA?1] 与B的最长公共前缀长度,记为ex ...
分类:
其他好文 时间:
2021-01-21 10:42:14
阅读次数:
0
字符串整理(Manachar,KMP,扩展KMP,ACAM,SA,SAM,最小表示法) 基础 字符集$\sum$:一个字符集是一个建立了全序关系的集合,即任意属于$\sum$的元素可以比较,字符集中的元素叫做字符 字符串:一个字符串$S$将n个字符顺次排列组成,$n$为$S$的长度,计作$|S|$, ...
分类:
其他好文 时间:
2020-07-26 01:32:53
阅读次数:
67
扩展KMP 舞蹈链 卢卡斯定理/扩展卢卡斯 莫比乌斯反演 线段树分裂 LCT manacher 回文自动机 点分治 ...
分类:
编程语言 时间:
2020-07-20 23:01:57
阅读次数:
117
字符串 扩展kmp 1.1 引例 扩展kmp,求解如下问题: 问s串与t串的每一个后缀的最长公共前缀 容易发现:当某一个最长公共前缀等于s串的长度的时候,其实就是一个s串与t串的kmp匹配问题,因此得名“扩展”kmp。事实上,扩展kmp与普通kmp有一定的区别,两者并不是完全是拓扑关系。即使完全没学 ...
分类:
其他好文 时间:
2020-06-30 00:19:38
阅读次数:
73
「解题报告」 [JSOI2019] 节日庆典 (扩展kmp) 传送门 题面 题意 给定一个字符串 \(s\) (起始位置为 $1$), 对 \(s\) 的每个前缀求出最小循环表示的起始位置. 输入样例 abaacaba 输出样例 1 1 3 3 3 6 3 8 数据范围 \(|s| \le 3 \t ...
分类:
Web程序 时间:
2020-06-16 20:21:17
阅读次数:
64
拓展KMP算法入门 博客推荐 "扩展KMP算法" , 图很形象,代码写的也很清晰,下面的模板就是出自该博客文章。 拓展KMP是求母串 长度为 和子串 长度为 ,求 的每一个后缀子串与 的前缀子串匹配的最长长度。 代码实现 ...
分类:
编程语言 时间:
2020-01-31 22:31:50
阅读次数:
75
oiwiki上讲的挺详细的,但是感觉跟国内不太一样?代码好像也更简短? void pre_ekmp(char s[], int ekmp[], int n) { ekmp[0] = n; //国内是这样用的,oiwiki上好像是定义为0 for (int i = 1, l = 0, r = 0; i ...
分类:
其他好文 时间:
2020-01-23 15:35:06
阅读次数:
104
看了好久才懂,我好菜啊…… 题意:给两个字符串 $a$ 与 $b$,对于 $q$ 次询问,每次询问给出一个 $x$,求存在多少个位置使得 $a$ 从该位置开始的后缀子串与 $b$ 匹配的长度恰好为 $x$。 这题可以 Hash+二分 $O(n\log n)$ 过,还有一个高端做法是扩展 KMP(然而 ...
分类:
其他好文 时间:
2019-12-29 14:49:47
阅读次数:
69
这个算法主要靠画图理解,于是学习的时候画了不少图,正好写篇博客。 扩展KMP能解决的问题: 给定两个串$S,T$,对于S的每一个后缀$S[i...n]$求和$T$的$LCP$。 设$exnxt_i$表示后缀$S[i...n]$求和$T$的$LCP$,我们要做的就是求所有$exnxt_i$。 我们先对 ...
分类:
其他好文 时间:
2019-12-20 18:58:27
阅读次数:
89
字符串神题。 要点:Lyndon分解,扩展KMP, 最小循环表示,贪心。 题目链接 题意 已知字符串 $S$, 请你把它切成不超过 $k$ 段,并翻转其中若干段,使得最终字符串的字典序最小。 题解 先想一想如果 $k=|S|$ 怎么做。此时我们发现可以去掉“是否翻转”的决策,因为如果有一段不翻转,我 ...
分类:
其他好文 时间:
2019-12-07 18:05:26
阅读次数:
537