LOJ141 回文子串(回文自動機)

2021-09-25 08:16:55 字數 1121 閱讀 1697

雙向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...