这是一道神题。
首先我们需要建立AC自动机,然后再建个Fail树,之后发现
如果询问a串在b串中出现了几次,那么只需要看b串在AC自动机上所有的节点中有多少个节点,在a串的结束节点在Fail树上的子树中就可以了。
然后这样做就很可以了,但是仍然不能AC,
这时我们只需要按照Fail树的dfs序建立数据结构(我写了树状数组)进行区间查询就好了。
这时对于以上的b串,...
分类:
其他好文 时间:
2015-01-19 17:15:24
阅读次数:
128
题目大意:初始字串为空,首先给定一系列操作序列,有三种操作:
1.在结尾加一个字符
2.在结尾删除一个字符
3.打印当前字串
然后多次询问第x个打印的字串在第y个打印的字串中出现了几次
卡了很久……到底还是对AC自动机了解不是很深啊QAQ
fail树不是很难想 至少在用AC自动机切掉3172之后不是很难想……
首先构建AC自动机 注意由于这个字串的特殊构造 我们不必每打印一个字符串再...
分类:
编程语言 时间:
2014-11-26 19:08:19
阅读次数:
290