manacher
文章平均质量分 58
QAQQQQQQQQQQQ
菜
展开
-
Manacher【模板】
机房最后一个学习Manacher的人 Manacher大概就是利用回文子串的对称性来找到回文串长度下界不停往后递推 定义: len[i]len[i]len[i]表示iii为对称中心的最长回文长度,那么len[i]−1len[i]-1len[i]−1就是原串中的回文长度 mxmxmx表示能扩展到的最右位置 pospospos表示mxmxmx的回文子串的对称中心 步骤大概有这么几个: 1、1、1、把原...原创 2018-10-23 22:09:12 · 317 阅读 · 0 评论 -
FFT+manacher--bzoj3160: 万径人踪灭
传送门 一道隐蔽的FFTFFTFFT 题目要求回文子序列的个数,不能连续的话就用全部的减去连续的,连续的可以用manachermanachermanacher计算,全部的回文子序列怎么求呢? 因为这个序列中只有aaa和bbb,假设a=1,b=0a=1,b=0a=1,b=0,那么两个位置的字符都是aaa就是相乘为000(bbb的反着来同理)。 这样的话以iii为中心的回文子序列就可以看成s[i−k]...原创 2018-11-25 16:05:03 · 161 阅读 · 0 评论 -
后缀数组+二分+--luoguP3649 [APIO2014]回文串
传送门 首先回文子串可以用manachermanachermanacher求出来,并且可以知道开头和长度,那么问题就转化成求一个子串在原串中出现了多少次。 这个可以用SAMSAMSAM求(但我还不会 于是就用了SASASA,首先把hhh数组求出来,那么结合ststst表就可以O(1)O(1)O(1)求出一个后缀和另一个后缀的lcplcplcp,这样看起来是n2n^2n2的复杂度,但因为lcp(i,...原创 2018-11-26 17:55:40 · 170 阅读 · 0 评论