题意
就是给你n个模式串,长度总和不超过1e6,给你一个匹配串,长度不超过1e6,然后要求是把匹配的字符换成”*”。
思路
AC自动机,在标记尾节点的地方(个数)顺带标记一下匹配串的最长长度,然后用vector pair存一下每次匹配时的位置和匹配的长度,最后对于每一pair进行处理。(对了 先把模式串用小写的保存下来,因为不区分大小写)
看!代码
1 | //该程序不能判别相同模式串,因此若模式串重复,答案会将相同模式串当做不同的处理,因此若需要可以用map去重或修改insert |
AC自动机注释模板
1 | //该程序不能判别相同模式串,因此若模式串重复,答案会将相同模式串当做不同的处理,因此若需要可以用map去重或修改insert |
结构体版
1 |
|