CF710F String Set Queries(AC自动机+二进制分组)
非常牛逼的一道题。根据题意,就是动态的 AC 自动机(动态加字符串,删除字符串,查询所有串在模板串出现次数)
然后询问就是可以预处理每个点作为 (endpos) 的次数,对于一个串查其所有前缀的对应到根的边权总和。(直接预处理)
重点是怎么动态搞。
对操作二进制分组,也就是说,维护一堆树,大小分别是 (2^{k_1},2^{k_2},...,2^{k^n}) (大小即这个树是由前几个操作来的),然后每次二进制合并就是。
然后每次询问最多跑 (logn) 个树,每个串最多合并 (logn) 次,复杂度得到保证。
最后就是注意一下 Trie 树要单独建。
具体见题解。