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