摘要:
这题写得我真想吐... 主要注意一个地方。 1.每次cut的时候,cut的一颗子树,而不是只有q这个节点。 说到底,还是没有对fail树的形态有一个清晰地认识,不过这道题写后就好很多。 阅读全文
摘要:
这题感觉有点坑啊。 题目还是不难想的,先对一个字符串建后缀自动机,然后拿另一个字符串在上面跑。 假设当前跑到了p点,匹配长度为len。 那么当前会对答案产生贡献的串是哪些呢? 显然当前会对p及p到根的链产生贡献。这样显然可以用树形dp优化。 同时需要差分(我也不知道这是否是必须的)。 下面有upda 阅读全文
摘要:
这道题思路很好出来,但是不是很好写(自己太弱的原因)。 将那M个串连起来,建一个后缀自动机。 二分L,变成判定问题。 然后对每个询问串,在后缀自动机上跑出以i位置结尾的最长长度,设为c[i]。 在之后我们要做的是在这种条件下,求出最大覆盖长度。 之后我思路出了点问题,我以为就是用[i-c[i]+1, 阅读全文
摘要:
后缀自动机秒题。 首先观察公式,发现它最难的地方在求所有后缀的LCP之和。 首先回想一下求两个后缀的LCP怎么搞? 先翻转原串,然后在fail树上找到它们的LCA,LCA节点的step值即为它们的最长公共前缀。 延续这个思路,将问题转化成,给定一颗树,每个节点上有一个权值,现在有很多特殊点,一对特殊 阅读全文
摘要:
传送门 大致题意是给定一个字符串S,再给Q个询问,每次询问字符串Xi的循环同构在S中出现了多少次。 主要应该注意,若Xi串有循环节,那么对Xi进行匹配的时候会算重(即S中相同的子串多次被算入答案),解决方法是后缀自动机上打标记,若此节点没有被算过答案,则计算答案,否则跳过。 阅读全文