順序和逆序讀起來完全一樣的串叫做回文串。比如 acbca 是回文串,而 abc 不是( abc 的順序為 「abc」 ,逆序為 「cba」 ,不相同)。輸入長度為 n 的串 s ,求 s 的最長雙回文子串 t, 即可將 t 分為兩部分 x , y ,( |x|,|y|≥1 )且 x 和 y 都是回文串。
input一行由小寫英文本母組成的字串s。
output一行乙個整數,表示最長雙回文子串的長度。
sample inputbaacaabbacabb
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...