BZOJ 2565 最長雙回文串

2021-09-29 06:18:55 字數 843 閱讀 6331

題意:

給出乙個字串s

ss,求s

ss的最長雙回文子串t

tt,即可將t

tt分為兩部分x

xx,y

yy,(∣x

∣,∣y

∣≥1)

(|x|,|y|≥1)

(∣x∣,∣

y∣≥1

) 且x

xx和y

yy都是回文串。

題解:我們知道len

[i

]len[i]

len[i]

表示以i

ii這個字元結束的最長回文串的長度,然後我們只需要建立兩個回文自動機(乙個正向乙個反向)就可以啦!

詳細細節見**!

a cac

ac**:

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int maxn =

5e5+50;

struct palind

intinsert

(char ch)

lst = nxt[root]

[ch-

'a']

;return len[lst];}

}pam1,pam2;

char s[maxn]

;int lx[maxn]

,ly[maxn]

;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。一行乙個整數,表示最長雙回文子串的長度。...