字符串 hash + 高斯消元.
设第 $i$ 个串的答案为 $P(i)$ ,如果直接对于 AC 自动机上每个节点列出方程高斯消元,复杂度 $O((nm)^3)$ ,过不去.
由于只需要求出 $n$ 个终止节点的 $P(i)$ ,可以尝试优化,减少方程的个数.
只需要求出向后匹配 $m$ 个字符,想匹配 $s_i$ ,却提前匹配到 $s_j$ 的贡献.
这要求 $s_j$ 长度为 $m$ 的后缀与 $s_i$ 长度为 $m$ 的前缀相同,用字符串 hash 判断,于是 AC 自动机也可以省掉了.
1 | //%std |