總時間限制:
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不行,那就可以退出了,因為以該點為中心的字串不能繼續拓展了。我們應該開始列舉下乙個中心點了。然後我們考慮優化,馬拉車演算法的核心就是利用了前面計算的資訊,從而高效的得出最...