PAM(回文自动机)总结

Posted mikufun-hzoi-cpp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAM(回文自动机)总结相关的知识,希望对你有一定的参考价值。

其实只打了几个板子就没什么可说的

放个板子

struct node{
    int len,fail,nxt[26],sz;
#define len(k) t[k].len
#define fi(k) t[k].fail
#define c(p,x) t[p].nxt[x]
#define sz(k) t[k].sz
}t[500010];
int n,num,las,s[500010];
char a[500010];
inline void build(){ fi(0)=fi(1)=num=las=1; len(1)=-1; }
inline int Fail(int p){
    while(s[n]!=s[n-len(p)-1]) p=fi(p);
    return p;
}
inline int extend(cri x){
    cri p=Fail(las);
    if(!c(p,x)){
        len(++num)=len(p)+2;
        fi(num)=c(Fail(fi(p)),x);
        c(p,x)=num;
        sz(num)=sz(fi(num))+1;
    }
    return sz(las=c(p,x));
}

板子题:最长双回文串

改板子题:(Antisymmetry)

回文树题:双倍回文,(I Love Palindrome String)

以上是关于PAM(回文自动机)总结的主要内容,如果未能解决你的问题,请参考以下文章

P5496 模板回文自动机(PAM)(回文自动机)

PAM / 回文自动机(回文树)略解

[P5496] 模板回文自动机(PAM)

回文自动机例题

字符串-回文自动机

字符串-回文自动机