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 · 368 阅读 · 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 · 267 阅读 · 0 评论
分享