C 最長雙回文串 HYSBZ 2565

2021-09-27 03:32:39 字數 853 閱讀 2767

順序和逆序讀起來完全一樣的串叫做回文串。比如 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

12

hint

樣例說明

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

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

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

思路:題意求的是最長雙回文串所以我們先正著建樹,每次插入乙個字元的時候,就要記錄當前的長度。然後再反著建樹,邊建樹邊比較最長回文串是多少。

#include#include#include#includeusing namespace std;

const int n=26;

const int maxn=1e5+10;

struct pam

cout<}int main()

}

HYSBZ 2565 最長雙回文串

題意 找到乙個最長回文子串,該子串能夠分成兩長度大於 的部分,每部分都是乙個回文串 題解 回文樹維護乙個以i為起點和終點的最長回文串長度陣列即可 include using namespace std typedef long long ll const int maxn 1e5 5 const i...

最長雙回文串

題目描述 順序和逆序讀起來完全一樣的串叫做回文串。比如acbca是回文串,而abc不是 abc的順序為 abc 逆序為 cba 不相同 輸入長度為n的串s,求s的最長雙回文子串t,即可將t分為兩部分x,y,x y 1 且x和y都是回文串。對於 10 的資料,2 s 10 3 對於 30 的資料,2 ...

最長雙回文串

題目大意 輸入長度為n的串s,求s的最長雙回文子串t,即可將t分為兩部分x,y,x y 1 且x和y都是回文串。題解 若x,y都是回文串且相鄰,則共用乙個 可以對於每個 找出其左邊界和右邊界。include include include using namespace std define n 1...