description
順序和逆序讀起來完全一樣的串叫做回文串。比如acbca是回文串,而abc不是(abc的順序為「abc」,逆序為「cba」,不相同)。
輸入長度為n的串s,求s的最長雙回文子串t,即可將t分為兩部分x,y,(|x|,|y|≥1)且x和y都是回文串。
input
一行由小寫英文本母組成的字串s。
output
一行乙個整數,表示最長雙回文子串的長度。
sample input
baacaabbacabb
sample output
hint
樣例說明
從第二個字元開始的字串aacaabbacabb可分為aacaa與bbacabb兩部分,且兩者都是回文串。
對於100%的資料,2≤|s|≤10^5
2015.4.25新加資料一組mx
[i]+
mx[i
−mx[
i]] mx[
i]+m
x[i−
mx[i
]]
左右都可能拓展,所以倒著再做一遍即可。
/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*******
problem: 2565
user: 2014lvzelong
language: c++
result: accepted
time:96 ms
memory:14608 kb
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
****/
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int n = 110000;
int a[n], f[n], ch[n][26], s[n], len[n], mx[n], n, l, last, sz;
void readchar()
void pre()
void extend(int c)
mx[l] = len[last = ch[p][c]];
}int main()
bzoj2565 最長雙回文串
傳送門 manacher 奇怪的遞推 我也不清楚這算不算遞推 0.0 大體思路是記錄能到達每個字元的最早的對稱中心,然後根據在manacher的時候用當前回文串和前面相鄰的回文串來更新答案就好了 我邊界問題處理了好久,然而1a開森 code include define n 100005 char ...
BZOJ 2565 最長雙回文串
description 順序和逆序讀起來完全一樣的串叫做回文串。比如acbca是回文串,而abc不是 abc的順序為 abc 逆序為 cba 不相同 輸入長度為 n 的串s,求 s 的最長雙回文子串 t,即可將 t 分為兩部分x,y x y 1 且 x 和 y都是回文串。input 一行由小寫英文本...
BZOJ 2565 最長雙回文串
順序和逆序讀起來完全一樣的串叫做回文串。比如acbca是回文串,而abc不是 abc的順序為 abc 逆序為 cba 不相同 輸入長度為n的串s,求s的最長雙回文子串t,即可將t分為兩部分x,y,x y 1 且x和y都是回文串。一行由小寫英文本母組成的字串s。一行乙個整數,表示最長雙回文子串的長度。...