数据结构第四章学习的是串,数组和广义表(广义表课程中没讲,问题不大) 串的定义其实在c++学习中就有所接触,所以这里不详说, 重点说的是两个串模式匹配算法 1.BF算法 BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符; 若不 ...
分类:
其他好文 时间:
2019-04-14 23:02:08
阅读次数:
882
串的模式匹配 一、BF算法 —— 暴力匹配 1、当前匹配,++i;++j; 2、当前不匹配,i=i-j+2;j=1; 二、KMP算法 首先是主串s 和模式串t 的比较,当前比较的是主串s的第i个和模式串的第j个,若s[i]==t[j]; 则++i; ++j; 这里i,j为位置,而非下标 当出现不匹配 ...
分类:
其他好文 时间:
2019-04-14 09:29:43
阅读次数:
102
思路 AC自动机匹配二维模式串的题目 因为如果矩形匹配,则每一行都必须匹配,考虑对于一个点,设count[i][j]记录以它为左上角的与模式矩形大小相同的矩形中有多少行和模式矩形匹配 然后把模式矩形的每一行插入AC自动机中,把文本矩形的每一行在上面跑,如果文本矩形第i行和模式矩形第c行匹配,匹配位置 ...
分类:
其他好文 时间:
2019-04-12 12:03:26
阅读次数:
135
"$\verb|bzoj4892 [TJOI2017]DNA|$" 给定一个匹配串和一个模式串,求模式串有多少个连续子串能够修改不超过 $3$ 个字符变成匹配串 $len\leq10^5$ hash 枚举子串左端点,hash 求 lcp 枚举断点,接着跳过断点,记作一次修改,最多修改 $3$ 次。特 ...
分类:
其他好文 时间:
2019-04-06 14:18:08
阅读次数:
115
题目链接:https://ac.nowcoder.com/acm/problem/14612 题意: 维护一个在线 AC 自动机,要求实时添加和查询模式串。查询和添加次数 <= 10^5,字符串总长度 <= 3*10^6。 题解: 设 n 为模式串个数,l 为模式串平均长度。 AC 自动机不支持实时 ...
分类:
其他好文 时间:
2019-04-05 19:46:31
阅读次数:
160
题目:http://codeforces.com/contest/316/problem/G3 对询问串和模式串一起建一个后缀自动机,做出在每个串上的 right 集合大小之后枚举自动机上的每个点看看是否合法即可(合法的话,贡献是 len[ cr ] - len[ fa ])。 注意做出拓扑序后用的 ...
分类:
其他好文 时间:
2019-03-27 21:22:30
阅读次数:
181
JUly的文章:从头到尾彻底理解KMP KMP算法: 复杂度:线性 PMT数组:PMT中的值是字符串的前缀集合与后缀集合的交集中最长元素的长度。 next数组:是将PMT数组向后偏移一位得到的数组。 基于next数组进行匹配。 next数组的求法:模式串自己和自己匹配,用递推的方式,基于next[1 ...
分类:
编程语言 时间:
2019-03-27 11:04:32
阅读次数:
155
"P3808 [模板]AC自动机(简单版)" [题目描述] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。 "P3796 [模板]AC自动机(加强版)" cpp // luogu judger enable o2 include using namespace std; typede ...
分类:
其他好文 时间:
2019-02-17 11:00:17
阅读次数:
151
理解: 模式匹配就是将主串中下标为i的元素与模式串中下标为j的元素进行比较(比较过程中i不会回溯 而j的值会按照next对应的值进行回溯) ...
分类:
编程语言 时间:
2019-02-12 01:40:20
阅读次数:
162
P3796 【模板】AC自动机(加强版) P3796 【模板】AC自动机(加强版) P3796 【模板】AC自动机(加强版) https://www.luogu.org/problemnew/show/P3796 题目描述 有NN个由小写字母组成的模式串以及一个文本串TT。每个模式串可能会在文本串中 ...
分类:
其他好文 时间:
2019-02-12 01:35:51
阅读次数:
156