HYSBZ 2565 最長雙回文串

2021-09-25 16:56:58 字數 920 閱讀 1197

題意:找到乙個最長回文子串,該子串能夠分成兩長度大於0的部分,每部分都是乙個回文串

題解:回文樹維護乙個以i為起點和終點的最長回文串長度陣列即可

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

1e5+5;

const

int n =27;

struct palindromic_tree

void init (

)int get_fail (

int x )

int add (

int c )

last = next[cur]

[c];

cnt[last]++;

return len[last];}

ll count (

)return ans;

}} pat;

char s1[maxn]

;int x1[maxn]

,x2[maxn]

;int

main()

pat.

init()

;for

(int i = len-

1; i >=

0; i--

) x2[i]

= pat.

add(s1[i]);

//x2表示以i為起始的最大回文串長度

int ans =0;

for(

int i =

0; i < len; i++

)printf

("%lld\n"

,ans);}

}

C 最長雙回文串 HYSBZ 2565

順序和逆序讀起來完全一樣的串叫做回文串。比如 acbca 是回文串,而 abc 不是 abc 的順序為 abc 逆序為 cba 不相同 輸入長度為 n 的串 s 求 s 的最長雙回文子串 t,即可將 t 分為兩部分 x y x y 1 且 x 和 y 都是回文串。input 一行由小寫英文本母組成的...

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 一行由小寫英文本...