
字符串
文章平均质量分 88
Hypoc_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最小表示法小结
但是我们其实不关心两两之间的大小关系,只关心谁是最小的那么,那么在仔细琢磨一下,会发现其实 j~j+k 这一段都不可能是最小的,因为从 j+c 开头的串一定会比从 i+c 开头的串要小,因为 i+k 位小于 j+k 位。的话,考虑 i,j 以及 最小位置 的相对位置,最小位置不可能被舍弃,所以一定会在最小位置出现一次 i=j,我们令 j=j+1 后,后面的匹配 i 就不可能变了,而 j 会一直变大直到循环结束。位置开始往后匹配,如果发现有一位不一样的话(比如 i+k 位比 j+k 位要小),那么从。原创 2023-07-29 17:32:58 · 307 阅读 · 0 评论 -
kmp算法小结
废话以前用富文本编辑器写的太丑了……还写了很多废话,所以现在复习的时候就顺便重新写一发了。正题这是个用在单模式串匹配的算法,具体来说,有一个文本串 AAA,一个模式串 BBB,问 BBB 在 AAA 中出现的次数。如果用传统的暴力匹配,时间复杂度是 O(nm)O(nm)O(nm) 的,考虑优化这个过程。设 next[i]next[i]next[i] 表示模式串的第 i+1i+1i+1 位匹配失败时,要让 i=next[i]i=next[i]i=next[i],然后再继续匹配 i+1i+1i+1 位原创 2020-06-17 18:56:59 · 206 阅读 · 0 评论 -
广义后缀自动机小结
一点点正题其实这个没有太多可讲的,就是一个将所有字符串建在同一个SAM上的技巧。举个栗子:给出多个字符串,问其中包含多少个本质不同的子串。这个时候建一个广义SAM就很好解决,具体就是每次插入一个字符串时,将 lastlastlast 设为 000(即初始状态)。避免歧义,给一下自己的代码:struct state{ int len,link; map<char,int>n...原创 2020-05-06 14:49:43 · 237 阅读 · 0 评论 -
后缀自动机小结
废话花了大半天才把这东西学下来,现在还是感觉挺仙的qwq。顺便说一下,我在网上找到的个人认为最好的文章是这两篇:(学习概念)hihocoder,(整体入门)大佬翻译的俄文文章。当然看我这篇也行啦qwq,不过有些地方可能讲不太清楚?(语文能力有限啊qwq)正题定义: 对给定字符串 sss 的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀。不用太纠结上面这句话,往下...原创 2020-04-29 12:21:37 · 195 阅读 · 0 评论 -
后缀数组小结
废话这个东西理解了之后感觉很明朗,但是学的时候要硬刚半天才能明白……这也是解决字符串问题的一个利器呢!正题首先不能不知道后缀是啥吧,后缀:包含字符串的最后一个字符的字串(注意,字串一定是连续的)。为了方便,下面称以第i个字符为起点的后缀为第i个后缀。后缀排序接下来要对所有后缀进行排序,当然不能暴力排,O(n×nlogn)O(n\times nlogn)O(n×nlogn) 的时间复杂...原创 2020-03-31 09:53:35 · 177 阅读 · 0 评论 -
字典树
字典树(trie)挺好理解的,先看一下它的模板题吧:有n个单词,一个句子,问在句子中有多少个单词出现过。字典树,顾名思义,肯定查询功能特别发达,那么它具体怎么实现呢,在字典树中,有一个root节点,也就是整棵树的根,字典树的每一个节点(包括root)都向下连出了26条边,也就是对应的26个字母(注意!字典树中字母是记录在边上的),但每一条边下不一定都有儿子,于是,对于这道例题,可以将所有单...原创 2018-04-16 15:28:32 · 255 阅读 · 3 评论 -
AC自动机详解
首先,AC自动机,不是 自动Accepted机,这是一个多模字符串匹配算法,学习这个算法,首先要熟悉kmp算法这个单模字符串匹配算法,然后,我们知道有个高效的多模字符串匹配算法,叫字典树,它处理的是一些单词在一个句子里出现了几次,但假如不是在一个句子里,而是在一个字符串里呢?那它就显得很弱了,所以,AC自动机出现了!Aho-Corasick automaton,该算法在1975年产生于贝...原创 2018-04-27 13:56:18 · 899 阅读 · 0 评论