![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回文树(回文自动机)
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
-
I Love Palindrome String 【HDU - 6599】【回文自动机跳fail指针(trans指针)】
题目链接 题意:求每个回文长度下的满足以下要求的回文串的个数,满足l~(l + r)/2的串也是个回文串,并且原串也是回文串。输出长度为1~N的各个长度的答案。 思路:我一样是推了trans指针,trans指针求的是为原串最长回文后缀长度一半(向上取整)的回文后缀子串。然后,我们就可以通过trans先跳一下,然后不断的找fail知道可以匹配即可。 #include <iost...原创 2020-01-15 21:11:11 · 213 阅读 · 0 评论 -
[SHOI2011]双倍回文【回文树跳trans指针】
P4287 [SHOI2011] 看到有两个相等的回文的时候,第一的想法就是去用后缀数组加上回文树维护一下,但是推了很久,被"aaaaa"这样的例子给卡住了,然后就去想可不可以魔改一下回文树的跳转指针呢? 这里我用了贪心的办法来更改指针,也就是我们既然需要两个由相同回文串构成的回文(双倍回文),那么它长度为它的一半所在的后缀的位置也一定要求是回文了。所以,在这里引进“小于等于当前回文长...原创 2020-01-14 15:57:35 · 190 阅读 · 0 评论 -
最长双回文串【BZOJ 2565】【回文树】
BZOJ 2565 要求的是最长双回文串的长度,也就是一个串由两个回文串拼接而成。那么,我们不妨从前往后跑一次回文树,然后再从后往前跑一次分别知道以它为最后一个的回文串,和以它为第一个的回文串,知晓回文后缀与回文前缀,那么不就可以开始拼接了嘛。想了半天怎么跑fail,没想到竟然这么的简单,做复杂了。 #include <iostream> #include <cstdi...原创 2020-01-14 13:30:30 · 231 阅读 · 0 评论 -
[APIO2014]回文串【回文树(回文自动机PAM)】
P3649 第一次对于回文树的运用。 一道回文树的模板题,我们最后只需要统计一下回文树中每个串的出现次数乘以每个串的不同串的个数。 #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring> #inc...原创 2020-01-14 09:32:15 · 235 阅读 · 0 评论