#P3808. 【模板】AC 自动机(简单版)

    ID: 4812 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>字符串O2优化AC 自动机构造

【模板】AC 自动机(简单版)

题目背景

警告:通过套取数据而直接“打表”过题者,是作弊行为,发现即棕名。

这是一道简单的 AC 自动机模板题,用于检测正确性以及算法常数。

题目描述

给定 nn 个模式串 sis_i 和一个文本串 tt,求有多少个不同的模式串在文本串里出现过。
两个模式串不同当且仅当他们编号不同。

输入格式

第一行是一个整数,表示模式串的个数 nn
22 到第 (n+1)(n + 1) 行,每行一个字符串,第 (i+1)(i + 1) 行的字符串表示编号为 ii 的模式串 sis_i
最后一行是一个字符串,表示文本串 tt

输出格式

输出一行一个整数表示答案。

3
a
aa
aa
aaa
3
4
a
ab
ac
abc
abcd
3
2
a
aa
aa
2

提示

样例 1 解释

s2s_2s3s_3 编号(下标)不同,因此各自对答案产生了一次贡献。

样例 2 解释

s1s_1s2s_2s4s_4 都在串 abcd 里出现过。

数据规模与约定

  • 对于 50%50\% 的数据,保证 n=1n = 1
  • 对于 100%100\% 的数据,保证 1n1061 \leq n \leq 10^61t1061 \leq |t| \leq 10^61i=1nsi1061 \leq \sum\limits_{i = 1}^n |s_i| \leq 10^6si,ts_i, t 中仅包含小写字母。