最長回文 馬拉車演算法

2021-08-09 08:45:07 字數 986 閱讀 6592

總時間限制: 

10000ms

單個測試點時間限制: 

1000ms

記憶體限制: 

5120000kb描述

給出乙個只由小寫英文本元a,b,c...y,z組成的字串s,求s中最長回文串的長度.

回文就是正反讀都是一樣的字串,如aba, abba等

輸入乙個檔案一組資料

每組輸入為一行小寫英文本元a,b,c...y,z組成的字串s

字串長度len <= 110000

輸出乙個整數x,表示該字串中所包含的最長回文長度.

樣例輸入

aaaa

-------------//忽視 分割線 下同

abab

樣例輸出

4

-------------

3

1/*2

裸的manache考慮三種情況 3*/

4 #include5 #include6 #include7

#define maxn 11001089

using

namespace

std;

1011

char

s[maxn];

1213

intl,l,ans;

1415

int t[maxn*3],len[maxn*3

];16

17 inline void

init()

24 t[l]=0;25

return;26

}2728 inline void

manache()

38 ans=max(ans,len[i]-1

);39}40

return;41

}4243int

main ()

52return0;

53 }

**

最長回文串(馬拉車演算法)

最長回文子串 manacher演算法 馬拉車演算法 馬拉車演算法需要計算以每個字元為中心的回文串半徑。並記錄最右邊界 馬拉車演算法基於這樣乙個事實,從回文串的中心到兩邊是對稱的,意味著以兩邊對稱的字元為中心的回文串半徑相等 在不超過最右邊界的情況下,如果超出就需要擴充套件搜尋 public stri...

最長回文串 馬拉車演算法

有兩個長度均為n的字串a和b。可以從a中選乙個可以為空的子串a l1 r1 b中選乙個可以為空的子串b l2 r2 滿足r1 l2,然後把它們拼起來 a l1 r1 b l2 r2 求用這樣的方法能得到的最長回文串的長度。注意 求的不是本質不同的回文串個數哦!解題報告 找兩個之間的最長回文串,只不過...

最長回文字串 馬拉車演算法

很簡單的例題,就比如hdu3068那個,模版題。首先我們可以考慮暴力,然後可以列舉中心,當你列舉中心的時候,先是1,再是2,如果2不行,那就可以退出了,因為以該點為中心的字串不能繼續拓展了。我們應該開始列舉下乙個中心點了。然後我們考慮優化,馬拉車演算法的核心就是利用了前面計算的資訊,從而高效的得出最...