bzoj 2565 最長雙回文串 回文樹

2021-09-25 13:53:55 字數 1133 閱讀 3384

time limit: 10 sec  memory limit: 128 mb

submit: 4014  solved: 2049

[submit][status][discuss]

順序和逆序讀起來完全一樣的串叫做回文串。比如

acbca

是回文串,而

abc不是(

abc的順序為

「abc」

,逆序為

「cba」

,不相同)。

輸入長度為n的串

s,求s的最長雙回文子串

t,即可將

t分為兩部分x,

y,(|x|,|y|≥1)且x

和y都是回文串。

一行由小寫英文本母組成的字串s

。一行乙個整數,表示最長雙回文子串的長度。

baacaabbacabb

12樣例說明

從第二個字元開始的字串aacaabbacabb可分為aacaa與bbacabb兩部分,且兩者都是回文串。

對於100%的資料,2≤|s|≤10^5

2015.4.25新加資料一組,2019.1.1新加資料一組。

2012國家集訓隊round 1 day2

分析:只需要找出每個點往左的最長回文串和往右的最長回串,然後列舉一遍就可以得到答案,那麼就跑兩邊回文樹記錄一下就可以了。

#include using namespace std;

const int n = 1e5+4;

char s[n];

struct palindromic_tree

void init()

int get_fail(int x)

void add(int c)

last = nxt[cur][c];

cnt[last]++, id[last] = n;

pos[n]=len[last];

}} paml,pamr;

int main()

for (int i = len - 1; i >=0 ; --i)

int ans = 0;

for (int i = 2; i <= len ; ++i)

cout<}

}

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