loj2278. 「HAOI2017」字符串

Posted liankewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了loj2278. 「HAOI2017」字符串相关的知识,希望对你有一定的参考价值。

2278. 「HAOI2017」字符串

给出一个字符串 $ s $ 和 $ n $ 个字符串 $ p_i $,求每个字符串 $ p_i $ 在 $ s $ 中出现的次数。注意这里两个字符串相等的定义稍作改变。

给定一个常数 $ k $,对于两个字符串 $ a, b $,如果 $ a = b $,那么满足:

1. $ |a| = |b| $;
2. 对于所有 $ a_i eq b_i $ 以及 $ a_j eq b_j $,满足 $ |i-j| < k $。

如果 $ |a| = |b| le k $,那么认为 $ a = b $。

 


写在前面:注意!!这题我还没有调出来!

因为这是一道多模板串题,我们考虑AC自动机。

它的要求相当于中间可以有一段长度为k-1的不匹配,其他都要匹配。

那么我们吧所有p的正串建AC自动机,反串也建AC自动机。

对于一个节点x,假设它匹配到了某个串的第j位,对应的反串应该要匹配那个串的后j+k+1位。

那么我们记录下反串j+k+1的节点是哪一个,当成询问挂在x上。

我们在把s拿去跑AC自动机,同样把对应的j与j+k+1记录下来。

统计的时候相当于把j+k+1的位置+1,询问子树和。

有一个容斥我没有想的很清楚,先咕着

 

以上是关于loj2278. 「HAOI2017」字符串的主要内容,如果未能解决你的问题,请参考以下文章

loj#2312. 「HAOI2017」八纵八横(线性基 线段树分治)

HAOI2016找相同字符

loj2061 「HAOI2016」放棋子

loj2062 [HAOI2016]地图

loj10139. 「一本通 4.5 练习 1」树上操作(loj2125. 「HAOI2015」树上操作 )

LOJ#2127. 「HAOI2015」按位或