题目描述 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的。 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P。 “2 x”,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅当 ...
分类:
编程语言 时间:
2018-04-04 12:44:04
阅读次数:
205
题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过。一看这种多字符串匹配问题,我们联想到了AC 自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树,fail树有一个很好的性质就是,对于一个节点x,它所对应的字符串是它子树中所有节点对应的字符串的后 ...
分类:
其他好文 时间:
2018-01-22 22:54:32
阅读次数:
207
传送门 我好菜啊……这种题都不会做……lrd给我讲了之后我才会的…… 不难想到对所有询问串建AC自动机,然后可以在每次加进来一个文本串时维护一下答案,询问的时候直接回答。 每次扔进来一个文本串的时候fail树上经过的节点到根节点的所有节点的出现次数都会+1,但注意有很多节点会被算重了,这时就需要搞一 ...
分类:
其他好文 时间:
2017-03-14 21:12:00
阅读次数:
283
题目大意:给定两个字符串集合S和T,初始给定S集合中的所有字符串,不断向T集合中添加字符串,以及询问S集合中的某个字符串在T集合中的多少个字符串中出现过
神题- -
首先对S集合的所有字符串构建fail树
T集合中每加入一个字符串,我们就将这个字符串在AC自动机上跑一遍,并记录经过的所有节点
根据fail树的性质,这些节点到根路径上的所有节点的并集的出现次数都加了1
因此我们要求的就是树...
分类:
其他好文 时间:
2015-01-22 18:21:37
阅读次数:
345