AC自动机:
(1)一个长串,多个短串,求长串中匹配了几个短串(包括分别匹配了几个,总共匹配了几类)
(2)此处模板为长串中匹配了几个短串;
(3)复杂度为O(n);
(4)理论基础
- Trie树
- KMP
- 链表
思路:
(1)问题分析:给定1e6模式长串,多个短串,求其中匹配的各模式串中个数最大者及其个数;
(2)分析:多模式串匹配问题,考虑AC自动机;
(3)过程:
- 建立string数组与int数组统计短串及其个数;
- 先建立短串与标记的map映射;
- 对于多个子串,建立Trie树,并将短串在Trie树中的终点映射到短串标记;
- 建立链式关系;
- 查询时查到后对该节点对应短串进行计数;
- 找到最大出现次数及其节点;
代码:
#include <queue>
#include <cstdlib>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#incl