#B1389. 子序列自动机【模板】

子序列自动机【模板】

【题目描述】

给定一个长度为 nn 的字符串 ss,以及 mm 个询问字符串。第 ii 个询问字符串记为 tit_i。

如果能够从 ss 中选出若干个字符,组成顺序与 tit_i 完全相同的字符串,则称 tit_i 是 ss 的一个子序列。选出的字符在 ss 中可以不连续,但必须保持原有的相对顺序。

请你判断这 mm 个询问字符串中,有多少个是 ss 的子序列。

例如,字符串 abcde 的子序列包括 ace、bde 和 abcde,但不包括 aec,因为 e 在 a 的后面而 c 在 e 的前面。


【输入描述】

第一行输入两个整数 n,mn,m,分别表示字符串 ss 的长度和询问字符串的个数。

第二行输入一个长度为 nn 的字符串 ss。

接下来 mm 行,每行输入一个字符串 tit_i,表示一个询问。

保证:

  • 1≤n≤2×1061\le n\le 2\times 10^6;
  • 1≤m≤3×1051\le m\le 3\times 10^5;
  • ss 和所有 tit_i 均只包含小写英文字母;
  • 1≤∣ti∣≤1071\le |t_i|\le 10^7;
  • 所有询问字符串的长度之和不超过 10710^7。

【输出描述】

输出一个整数,表示是 ss 的子序列的询问字符串个数。


【样例 1】

【样例 1 输入】

5 6
abcde
ace
bde
aec
abcde
aa
edc

【样例 1 输出】

3

【样例 1 解释】

ace、bde 和 abcde 都是 abcde 的子序列;aec 的字符顺序不一致,aa 和 edc 也无法满足要求,因此答案为 33。


【样例 2】

【样例 2 输入】

14 8
mississippiabc
issi
ssip
ppi
miss
abc
isabc
issippi
xyz

【样例 2 输出】

7

【数据规模与约定】

本题共有 33 个测试集,共 1010 个测试点。

测试集 测试点编号 分数 特殊性质
1 1 ~ 3 30 n≤500n\le 500,且所有 ∣ti∣≤500|t_i|\le 500
2 4 ~ 6 所有询问字符串互不相同,且 ∑∣ti∣≤2×106\sum |t_i|\le 2\times 10^6
3 7 ~ 10 40 无