
AC自动机
hesorchen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AC自动机+拓扑排序
题目题目思路暴力解法:对于每个最长匹配,迭代跳fail,累计贡献。时间复杂度O(n2)O(n^2)O(n2)。优化:只标记最长匹配,最后用拓扑排序计算贡献。时间复杂度O(n)O(n)O(n)。代码#include <bits/stdc++.h>using namespace std;const int N = 2e6 + 5;const int M = 2e5 + 5;int tr[N][26];char s[N];int ans[M];int out[M];in原创 2021-07-13 09:57:21 · 331 阅读 · 1 评论 -
AC自动机模板
题目题目链接简介KMP算法用来解决单模式串在单文本串中的匹配问题,trie树可以用来解决多模式串在单文本串的匹配问题,但是每次失配都要重新匹配,时间复杂度很高。AC自动机在trie树上建立fail指针,像KMP一样,对失配时的情况进行优化,使得时间复杂度降到O(n)O(n)O(n)。原理一、构建trie树,这是AC自动机的前提。二、在trie树上建立fail指针,AC自动机的关键所在。如果一个模式串ABCDEF在文本串中出现过,那么我们可以确定,该模式串的任意一个后缀也都在文本串中出现过。 f原创 2021-07-12 11:37:15 · 244 阅读 · 0 评论