
字符串
文章平均质量分 91
qcwlmqy
我很懒,所以不写
展开
-
Shift-And算法
Shift-And算法用于每一位可以匹配多个字符的情况使用bitset实现kmp思想寻找模式串的前缀与匹配串后缀的最大匹配长度Regular Number题意模式串每位可以匹配0-9的多个数字输出与模式串匹配的匹配串思路waring :在输入输出字符串的时候puts和gets会快很多先用bitset记录每种值所在的位置for (int i = 0; i < 1...原创 2019-10-21 23:09:42 · 508 阅读 · 0 评论 -
拓展KMP学习笔记和题目集
拓展KMP模板问题给出两个字符串匹配串 s , 模式串 p请输出 s 的每一个后缀与 p 的最长公共前缀核心:由已知的匹配,求出当前已知的最长匹配位置exkmp[]:表示模式串的每个后缀与模式串最长匹配长度extend[]:表示匹配串的后缀与模式串的最长匹配长度利用kmp的思想,用已得到的信息推出下一位EXtend[]若已得到extend[i](1≤i≤k)extend...转载 2019-08-28 21:51:57 · 170 阅读 · 0 评论 -
AC自动机 fail树优化
AC自动机优化学习笔记fail 树由于每个点都只连出一条 fail 边,且连到的点对应的字符串长度更小,所以 fail 边构成了一棵 fail 树关于某个模式串的接受状态,也就是与某个模式串匹配(以某个模式串为后缀)的那些状态,就是那个串在 Trie 树上的终止节点在 fail 树上的子树建出 fail 树,记录自动机上的每个状态被匹配了几次,最后求出每个模式串在 Trie 上的终止节...原创 2019-08-12 22:48:08 · 634 阅读 · 0 评论 -
AC自动机学习笔记
AC自动机AC自动机是一种有限状态自动机,它常被用于多模式串的字符串匹配AC自动机是以 Trie 的结构为基础,结合KMP的思想建立的KMP学习笔记实现基础的 Trie 结构:将所有的模式串构成一棵TrieKMP的思想:对Trie树上所有的结点构造失配指针,并建成图root:初始化的根num:节点数量mark[]:记录val值fail[]:fail数组,跳转数组s...原创 2019-08-12 22:46:26 · 261 阅读 · 0 评论 -
KMP学习笔记
KMPKMP算法的核心是当前位失配时,可以跳转当上一个最长的匹配位置模式串:abcab文本串:abcacababcab当第 5 位失配时应当直接跳转到第一位实现当前位匹配,模式串匹配长度 + 1当当前位失配时,跳转到当前 前缀的 前缀和后缀 最大匹配位置并验证当前位是否匹配,否则重复以上过程ps:如果持续失配,跳转到第一位,重新开始匹配void Kmp(i...原创 2019-08-12 22:43:32 · 159 阅读 · 0 评论 -
CF17E Palisection(回文自动机+链式前向星优化空间)
CF17E Palisection题意给出字符串求出字符串的子串中相交的对数思路问题转化为字符串总对数减去不相交的回文串对数总对数为回文串总数:n∗(n−1)/2n*(n-1)/2n∗(n−1)/2不相交对数即为正反跑两边回文串对于以i结尾的回文串,与他不相交的回文串为反向的以x为结尾回文串总数i≤x≤ni\leq x\leq ni≤x≤n处理二百万的字符...原创 2019-08-20 21:19:04 · 184 阅读 · 0 评论 -
HDU5421 Victor and String(回文自动机前端插入)
Victor and String题意维护字符串,可以执行以下操作(初始为空串)前端插入一个字符后端插入一个字符查询不同本质回文串个数查询所有回文串个数思路前端插入维护pre,last两个标记维护前后添加以pre为例,当添加节点后新增的节点后最长回文串不是本身时,新添加的节点不会影响last即len[last],fail[last]len[last],fai...原创 2019-08-20 21:01:06 · 322 阅读 · 0 评论 -
HDU 6599 I Love Palindrome String(回文自动机)
I Love Palindrome String题意给出字符串str求出str中的子串数且该子串为回文串并且该子串的前半串(包括中间字符)也为回文串思路首先可以轻松预处理出所有本质不同回文串个数即使用回文自动机+常规操作将fail[]指针建树在fail树上DFS,在同一路径上的回文串为同一后缀的回文串DFS回溯维护不同长度回文串个数对于一个串,查询KaTe...原创 2019-08-20 20:42:18 · 234 阅读 · 0 评论 -
回文自动机常用操作和题目集
回文自动机以iii为尾节点的字符串维护增加一个节点后即为在原有的所有真后缀回文串(mark[fail[num]]mark[fail[num]]mark[fail[num]])增加一个回文串更新(mark[num])if (!tree[last][in[i] - 'a']) { /*operation*/ mark[num] = mark[fail[num]] + 1; //...原创 2019-08-20 20:19:56 · 429 阅读 · 0 评论 -
回文自动机学习笔记
回文自动机学习笔记由两棵子树构成一棵节点编号为0,子树是长度为偶数的回文串一棵节点编号为1,子树是长度为奇数的回文串回文自动机奇偶回文串处理len[0]=0,len[1]=−1len[0] = 0, len[1] = -1len[0]=0,len[1]=−1使得在111号子树下的字符串长度−1-1−1fail[0]=1fail[0] = 1fail[0]=1使得字符串最终能跳到...原创 2019-08-20 00:29:46 · 184 阅读 · 0 评论 -
初探字典树、Trie树 题目整理
字典树字典树是一种处理前缀的数据结构略懂数据结构的人,相信看完下面这张图就差不多理解了TrieTrieTrie的根节点是空的~~(相信没有题目给的所有数据有公共前缀)~~每个节点储存一个单词/字母根节点到每个单词节点的路径上的所有字母连接而成的字符串就是该节点对应的字符串...原创 2019-08-05 01:03:23 · 335 阅读 · 0 评论 -
初探字符串匹配 题目整理
初探字符串匹配KMPKMPKMP算法模式串匹配,就是给定一个需要处理的文本串(理论上应该很长)和一个需要在文本串中搜索的模式串(理论上长度应该远小于文本串),查询在该文本串中,给出的模式串的出现有无、次数、位置等。KMPKMPKMP 的精髓在于,对于每次失配之后,我都不会从头重新开始枚举,而是根据我已经得知的数据,从某个特定的位置开始匹配;而对于模式串的每一位,都有唯一的“特定变化位置”,...原创 2019-08-02 23:39:25 · 349 阅读 · 0 评论