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)