首页 > TAG信息列表 > BZOJ2565
BZOJ2565: 最长双回文串(回文树)
BZOJ2565: 最长双回文串(回文树) 知识点:1.前后扫描两次字符串,分别建回文树。 #include <bits/stdc++.h>using namespace std;const long long MAXN = 100002; struct PAM{ char c[MAXN]; long long ch[MAXN][26]; long long fail[MAXN],len[MAXN],cnt[MAXN]; long lo[BZOJ2565] 最长双回文串
题目链接 BZOJ. 洛谷. Solution 随便跳的题... 先跑一边\(manacher\)。 很容易想到一个做法,处理出\(l[i]\)表示以\(i\)结尾的回文串最大长度,\(r[i]\)表示以\(i\)开头。 那么如何处理出这个呢,可以发现,\(l[i]\)其实就是回文中心离\(i\)最远的,且回文可以波及到\(i\)。 那么直接拿个指BZOJ2565:最长双回文串
浅谈\(Manacher\):https://www.cnblogs.com/AKMer/p/10431603.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2565 统计一下每个点做靠左的能覆盖它的回文串中心\(left_i\)和最靠右的能覆盖它的回文串中心\(right_i\)即可。 每次用#的\(right_i-left_i\)直接更BZOJ2565最长双回文串——manacher
题目描述 顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。 输入 一行由小写英文字母组成的字符串S。 输出 一行一个整数