字符串 马拉车算法 ~~ "P3805 【模板】manacher算法" ~~ "P1659 [国家集训队]拉拉队排练" "P4555 [国家集训队]最长双回文串" AC自动机 "P3808 【模板】AC自动机(简单版)" "P3796 【模板】AC自动机(加强版)" "P2444 [POI2000] ...
分类:
其他好文 时间:
2019-01-27 16:26:53
阅读次数:
192
#include const int maxn=1e6+10; using namespace std; int p[maxn*2+10]; string manacher(string ss) { string tt="$#"; for(int i=0;ii) p[i]=min(p[2*id-i]... ...
分类:
其他好文 时间:
2019-01-19 11:18:45
阅读次数:
134
Best Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4345 Accepted Submission(s): 1791 Pro ...
分类:
其他好文 时间:
2019-01-12 15:57:10
阅读次数:
212
可能还是非常板子的$Manacher$ 还是先跑一遍$Manacher$处理出来所有的回文半径$r[i]$ 由于我们要找的答案是两个回文串拼了起来,所以我们考虑枚举中间这个拼接处 所以我们要找到每一个$i$,其左边能够到达$i$的和右边能到达$i$的最大的回文半径 显然并不能直接使用$i+r[i]$ ...
分类:
其他好文 时间:
2019-01-01 21:08:06
阅读次数:
143
这是一道大水题 首先这里只需要统计奇回文串,所以连插入特殊字符都不需要 之后我们跑一边$Manacher$的板子 搞一个后缀和数组$pre[i]$,先把所有的回文半径对应过去,之后求后缀和 之后我们倒着统计就好了,每次$ans\times=i^{pre[i]}$ 没了 代码 cpp include ...
分类:
其他好文 时间:
2019-01-01 21:07:17
阅读次数:
143
我还什么都不会啊 字符串还是很重要的,省选肯定会考的吧 所以还是先写一下马拉车吧 $ $ $Manacher$ 是一个求最长回文子串的算法,复杂度$O(n)$ 核心原理就是利用回文串的性质 首先还是按照对称轴来找回文串,为了避免分类讨论回文串的奇偶性,所以可以在字符串之间先填充特殊字符 具体做法就是 ...
分类:
编程语言 时间:
2019-01-01 19:51:39
阅读次数:
155
题目描述 题解: 这篇题解是关于manacher+SAM的。 因为我还不会回文自动机我会学的 SAM支持给出一个串,求出现次数。 manacher支持找回文串。 然后放在一起,当每个节点回文半径扩展时查询。 这样时间是O(n^2)的。 为了时间,我们可以O(nlogn)预处理每个节点沿pre指针条2 ...
"传送门" 这题……我觉得像我这样的菜鸡选手难以想出来…… 题目要求求出一些子序列,使得其关于某个位置是对称的,而且不能是连续一段,求这样的子序列的个数。这个直接求很困难,但是我们可以先求出所有关于某个位置对称的子序列,最后减去子串的个数。 子串个数可以用$manacher$求,至于子序列的话,我们 ...
分类:
其他好文 时间:
2018-12-13 10:23:58
阅读次数:
180
"传送门" 对$A$、$B$串各跑一遍$manacher$,求出第$1$、$2$类扭动回文串的最大长度。 考虑第三类的扭动回文串$S(i,j,k)$,一定可以表示为$A(i,l)+A(l+1,j)+B(j,k)$或$A(i,j)+B(j,l)+B(l+1,k)$,其中,第一段与第三段对称(第一段正着 ...
分类:
Web程序 时间:
2018-12-12 13:23:23
阅读次数:
226