ac自动机
meopass
即使摸爬滚打,满身泥泞,我也要前进
展开
-
HDU6096 ac自动机+fail树
题目问每个”prefix + ’ ’ + suffix”类型的串能匹配上多少个串S。 可以做处理将”prefix + ’ ’ + suffix” 转化为 “suffix + ‘@’ + prefix”类型的串,然后把所有S串扩充成”S + @ + S”串。 问题就转化成了,给定m个串,问每个串是多少个s串的子串。 首先不考虑前缀后缀不允许重合的条件。 将m个串建ac自动机,分别用n个串去匹配原创 2017-08-18 13:01:24 · 427 阅读 · 0 评论 -
BZOJ 2434 ac自动机fail树+dfs序+树状数组+离线处理
简略题意:中文题目丢链接跑先考虑建立acac自动机,PP代表当前节点为终止节点,BB代表返回父亲节点。 这样就可以O(n)O(n)建树。 问第xx个字符串在yy中出现多少次,相当于问rootroot到yy这条路径每个点不停在fail上走,能到达多少次xx。 所以我们相当于在fail树上询问,rootroot到yy这条路径上有多少点在xx的子树中。 对于一个询问,我们只需要把rootroot到原创 2017-09-08 23:40:14 · 390 阅读 · 0 评论 -
HDU 6208 AC自动机 或 暴力?
简略题意:问是否存在一个串,其他串都是他的子串。看了题目之后,可以明确一点,极限数据的情况下,暴力一定过不了。 有可能成为目标串的一定是最长串,所有串建AC自动机,用最长串去匹配。如果匹配到了所有串,那么答案存在。 具体做法就是每访问到一个节点,都看当前节点是否能匹配到某个串,以及这个节点一直在fail树上跳转到根部的这段路径上是否能匹配上某个串。 这题卡自动机做法主要在两点: 1. 卡读入原创 2017-09-18 12:22:14 · 983 阅读 · 2 评论