「字符串算法」第5章 AC自动机
- A. 【例题1】单词查询:AC自动机模板。
- B. 【例题2】单词频率:注意单词会重复。洛谷上同一题需要进一步优化,
fail不能再一步一步跳了。 - C. 【例题3】前缀匹配:匹配文本串,标记经过的点,最后再把每个模式串再匹配一下更新答案。
- D. 【例题4】屏蔽词删除:不需要跳
fail;查找屏蔽词时用栈,每次找到后就回溯。 - E. 【例题5】病毒代码:记病毒代码段的终止点是非法点,那么就只需要判断是否存在一个不经过非法点的环,且存在从0节点到这个环不经过非法点的路径,用
dfs判断,注意要用两个数组标记,非法点可以在计算fail时线性转移。 - F. 1.组合攻击:AC自动机+DP。
dp[i][j]表示前i个字符,停在了j点的分数,显然通过相邻节点转移,统计答案时要把所有子串的贡献加上,即不断地跳fail,直到不能再跳为止。 - J. 5.文本生成器:AC自动机+DP。用容斥的思想,计算不可读的文本数量,最后用总数减去。
dp[i][j]表示前i个字符,停在了j点的不可行的方案数。
本文将深入探讨AC自动机在单词查询、频率统计、前缀匹配、屏蔽词删除、病毒检测、组合攻击、文本生成等场景的实例与优化技巧。通过实例学习AC自动机原理,并关注如何提高效率和处理重复问题。
212

被折叠的 条评论
为什么被折叠?



