U260001 【模板】CHY 自动机

题目背景

CHY 发明了一个神奇的自动机,CRQ 出了一道它的板子题。

题目描述

给定 $n$ 个文本串。 有 $m$ 组询问,每组询问给出模式串 $s$,求 $n$ 个文本串的前缀集合中有多少个串的 $\text{border}$ 集合包含 $s$。

输入格式

第一行是两个正整数 $n,m$,分别表示文本串和模式串个数。 接下来 $n$ 行每行均为一个字符串,表示文本串。 接下来 $m$ 行每行均为一个字符串,表示模式串。

输出格式

输出共有 $m$ 行,每行各有一个正整数,表示题目中所求的答案。

说明/提示

数据范围:字符串均由小写字母构成,文本串与模式串总长均不超过 $5 \times 10^6$。 前 5 个测试点满足 $1 \leq n,m,len \leq 10$,$len$ 为单个模式串或文本串的长度。 当前测试点由随机生成,可能较弱。虽然 `map` 在 O2 优化下可以通过当前数据点,但是复杂度是错误的。(std 可以在不使用 O2 优化的前提下通过本题) 如果你觉得自己的做法常数大得莫名其妙,可以考虑: 1. 加上 `ios::sync_with_stdio(false);` 2. 把 `vector` 换成手写栈。 对于正确的解法,目前的数据完全不卡空间,时限开 2s 也是给空间复杂度优秀的做法准备的。 样例解释: 样例 1 中 $n$ 个字符串的前缀集合为:$\{\text{a,c,ab,cb,aba,cba,abab,cbab,ababa,ababc,cbabc}\}$ $\text{a}$ 是串 $\{\text{aba,ababa}\}$ 的 $\text{border}$,$\text{aba}$ 是串 $\{\text{ababa}\}$ 的 $\text{border}$。 [Solution of CHYAM —— by CrH2](https://www.cnblogs.com/CrH2/p/16868559.html) [Solution of SAM —— by FxorG](https://www.cnblogs.com/xugangfan/p/16878105.html)