随笔分类 - 字符串
摘要:一些经典的问题: 求各个模式串在文本串中出现了几次: 方法: 在AC自动机上先跑一边文本串,记录一下每个点被经过的次数,那么单词被经过的次数就是他的结尾在fail树中的子树的权值和 找是否有一个匹配不上匹配串的环: 方法: 把所有能匹配上匹配串的节点匹配记录下来,dfs从跟开始走所有我可以走的点,如
阅读全文
摘要:problem 给出 \(n\) 个互不包含的字符串,要求你求出一个最短的字符串 \(S\),使得这 \(n\) 个字符串在 \(S\) 中总共至少出现 \(m\) 次,问 \(S\) 最短是多少。 solution 我们首先转化题意: 有 \(n\) 个点,两个点 \(i,j\) 之间的权值为将第
阅读全文
摘要:AC自动机算法流程 若我们没有构建出失败指针,则AC自动机就是一个普通的$Trie$,而用$Trie$完成上面的单词查询问题,我们需要对于文章的每一个位置$i$开始,将$S_{i\rightarrow m}$视作一个字符串,在$Trie$中进行查询,将所有所到达的节点进行标记,最后统计那些代表模式串
阅读全文
摘要:Manacher 算法流程 为了不判断奇偶,方便比较,在原字符串里添加一些特殊字符 明确几个变量,$r$代表我遍历过的位置中回文串能延伸的最远位置,$mid$是$r$对应的中心位置,那么$mid$对应的左端点就是$2mid-r$,$f_i$表示$i$为中心的回文半径长度 接下来就分以下情况讨论,可以
阅读全文
摘要:好像也讲不了什么,大致就是前缀相同的会合并到一起,不相同的出现分支 例题: 这道题可以一遍建树一遍查询,因为所有的单词都一样长,所以问题稍微简化了一点点,建树的时候记录一下以$i$为结尾的单词个数,边建树边查询,因为我们先查询到1次,才能查询到第2次,所以当我发现这个字符串出现了两次,那么出现一次的
阅读全文
摘要:玄学的字符串算法可能并不能讲明白,谅解 kmp算法流程 假如,\(A=abababaababacb\),\(B=ababacb\).我们来看看$KMP$是怎么工作的。我们用两个指针$i$和$j$分别表示,$A_{i-j+1\rightarrow i}$与$B_{1\rightarrow j}$完全相
阅读全文

浙公网安备 33010602011771号