題目描述
給出乙個只由小寫英文本元a,b,c…y,z組成的字串s,求s中最長回文串的長度.
字串長度為n
輸入輸出格式
輸入格式:
一行小寫英文本元a,b,c…y,z組成的字串s
輸出格式:
乙個整數表示答案
輸入輸出樣例
輸入樣例#1:
aaa
輸出樣例#1:
3 說明
字串長度len <= 11000000
//by menteur_hxy
#include
#include
#include
#include
using
namespace
std;
const
int max=11000100;
const
int inf=0x3f3f3f3f;
int len,p[max*3];
char a[max*3]=;
void manacher()
}int main()
// for(int i=0;i<=len;i++) coutint ans=0;
for(int i=0;i<=len;i++)
if(p[i]>ans) ans=p[i];
printf("%d",ans-1);
return
0;}
模板 manacher演算法
回文串長度的奇偶性造成了對稱軸的位置可能在某字元上,也可能在兩個字元之間的空隙處 那麼manacher對此的優化是在每兩個字元中間插入另乙個字元,如 用乙個輔助陣列r表示每個點能夠擴充套件出的回文長度 我們先設定乙個輔助變數maxright,表示已經觸及到的最右邊的字元 另外還要設定乙個輔助變數mi...
回文串 Manacher演算法(模板)
用途 在o n 時間內,求出以每乙個點為中心的回文串長度。首先,有乙個非常巧妙的轉化。由於回文串長度有可能為奇數也有可能為偶數,說明回文中心不一定在乙個字元上。所以要將字串做如下處理 在每兩個字母之間插入乙個特殊字元,通常用 這樣所有的回文串就都變成了以乙個字元為回文中心的。並且,我們需要在字串的開...
題解 P3805 模板 manacher演算法
我們先看兩個字串 abccba abcdcba 顯然這兩字串是回文的 然而兩個串的對稱中心的特性不同,第乙個串,它的對稱中心在兩個c中間,然而第二個串,它的對稱中心就是d。這樣我們如果要記錄回文串的對稱中心,就顯得複雜了。為了解決這個問題,把兩種情況統一起來,我們就在字母之間插入隔板,這樣兩個問題就...