![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回文树
hcx11333
菜鸡一枚,成长ing。。。
展开
-
URAL1960 Palindromes and Super Abilities(回文树)
题意:给一个长度1e5的串,求它的每个前缀包含的不同回文串数量。 思路:不同回文串数量正好就是回文树中节点个数-2(除去节点0和1),按顺序插入字符构造回文树,每次插入字符后的结点数就是对应前缀中的回文串种类数。#include <iostream>#include <cstdio>#include <cstring>#include <...原创 2018-10-29 23:39:35 · 219 阅读 · 0 评论 -
TsinsenA1280/BZOJ2565 最长双回文串(回文树)
题意:输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。2≤|S|≤10^5。 思路:因为求的是双回文串的最大长度,优先找最长的X或最长的Y会出问题。所以要枚举X和Y的分界点,枚举每个位置,找出当前位置向前和向后能延伸到的最长回文串,求和更新答案。显然回文自动机可以求出以每个点为末尾向前能够延伸到的最大回文串,要解决的是求一...原创 2018-10-29 23:48:07 · 163 阅读 · 0 评论 -
TsinsenA1255. 拉拉队排练(陶文博) (回文树)
http://www.tsinsen.com/A1255题意:一个1e6的字符串,求出长度为奇数的回文子串中长度排前K的回文串的长度之积。 思路:建回文自动机,然后遍历结点,统计长度为奇数的回文串数量,然后从长到短算出前K长的回文串长度之积就行了。#include <iostream>#include <cstdio>#include <cstr...原创 2018-10-30 00:07:29 · 254 阅读 · 0 评论 -
TsinsenA1393. Palisection (回文树)
题意:从一个长度n(1<=n<=2e6)的字符串中来找出两个回文子串,求这两个子串有公共位置的取法有多少种。 思路:开始想着manacher预处理,然后给每个回文串计算范围内贡献的办法,WA了之后想到类似TsinsenA1280的处理办法,通过字符串两个方向上的预处理,求出回文串不相交的方案数,再用总方案数做个减法。用qz[i]表示前i位包含的回文串数,前缀和维护即可。...原创 2018-10-30 00:25:40 · 351 阅读 · 0 评论 -
UVALive - 7041The Problem to Slow Down You (回文树)
题意:T组样例,每组两个长度2e5的字符串a和b,求a中每个回文串在b中出现次数的总和。 思路:回文自动机中每个节点够代表一个不同的回文串,分别建立回文自动机统计出a和b中每种回文串出现的次数,然后分别从节点0和1做dfs,统计相同结点的cnt乘积即可。#include <iostream>#include <cstdio>#include <cst...原创 2018-10-30 00:30:48 · 147 阅读 · 0 评论 -
BZOJ3676: [Apio2014]回文串 (回文树模板)
题意:求串s中每个回文串的长度与出现次数乘积的最大值。 思路:回文树裸题,求最大的cnt*len即可。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <stac...原创 2018-10-30 00:33:36 · 177 阅读 · 0 评论 -
HDU5157 Harry and magic string(回文树)
题意:从一个串s中取两个回文子串,求使两个回文串互不相交的取法数。 思路:TsinsenA1393. Palisection的镜像问题,正反跑一次回文自动机,用前缀和计算贡献即可。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#...原创 2018-10-30 15:07:32 · 235 阅读 · 0 评论