2021-08-08

本文将深入探讨AC自动机在单词查询、频率统计、前缀匹配、屏蔽词删除、病毒检测、组合攻击、文本生成等场景的实例与优化技巧。通过实例学习AC自动机原理,并关注如何提高效率和处理重复问题。

「字符串算法」第5章 AC自动机

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robin_w2321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值