雙向pam板子,同時維護最長回文字首和最長回文字尾,和原來沒什麼區別,只需要注意當整個串成為乙個回文串的時候需要維護一下兩個指標。
**:
#include
#define ll long long
#define re register
#define gc get_char
#define cs const
namespace io
inline
char
peek()
template
<
typename t>
inline t get()
inline
intgetint()
}using
namespace io;
using std::cerr;
using std::cout;
cs int n=
4e5+5;
int son[n][26
],fa[n]
,len[n]
,dep[n]
,now;
char s[n<<1]
;int l=n,r=n-
1,llast,rlast;
ll ans;
inline
void
init()
inline
void
push_front
(char c)
llast=son[p]
[c];
if(len[llast]
==r-l+
1)rlast=llast;
ans+
=dep[llast];}
inline
void
push_back
(char c)
rlast=son[p]
[c];
if(len[rlast]
==r-l+
1)llast=rlast;
ans+
=dep[rlast];}
int q;
signed
main()
return0;
}
APIO2014 回文串 回文自動機moban
與manacher 字尾自動機倍增匹配相比快太多。manacher sam寫法 以上是回文自動機的速度 以上是manacher sam的速度。感受一下。受個人lj 的常數影響 回文自動機是乙個類字典樹,構造方式又類似於ac自動機。其每個結點就代表了乙個回文串 這與字尾自動機乙個結點代表多個字串不同 ...
APIO2014 回文串 (回文自動機裸題)
傳送門 沒看過題目的可以先看一下,題目要我們求的是回文串長度len 出現次數的最大值。很符合回文自動機的性質的題目,可以用sam manacher做,也不難,但是對回文自動機來說就是裸題。1,本質不同回文子串長度len陣列。2,出現次數可以用拓撲之後向前逆推求 upd 其實並不需要拓撲,因為回文數的...
luogu P3649 回文自動機模板
題意 給你乙個由小寫拉丁字母組成的字串 ss。我們定義 ss 的乙個子串的存在值為這個子串在 ss 現的次數乘以這個子串的長度。對於給你的這個字串 ss,求所有回文子串中的最大存在值。include using namespace std typedef long long ll const int...