字串 回文自動機

2021-08-20 14:54:18 字數 995 閱讀 5325

回文自動機學習部落格: (我喜歡這個**風格)

這個思想講解的更好:

思路:

對a ,b跑一次回文自動機,然後分別搜偶數長度的串, 奇數長度串。

code:

#include 

#define ll long long

using

namespace

std;

const

int ax = 2e5+666;

char a[ax];

char b[ax];

ll res;

struct ptree

cnt[p] = 0 ;

num[p] = 0 ;

len[p] = l ;

return p++;

}void init()

int get_fail( int x )

return x ;

}void insert( char c )

last = next1[cur][id];

cnt[last]++;

}void count()

} };ptree a , b ;

void dfs( int u1 , int u2 )

}return ;

}int main()

a.count();

b.init();

for( int i = 0 ; i < lenb ; i ++ )

b.count();

for( int i = 0 ; i < 26 ; i++ )

}for( int i = 0 ; i < 26 ; i++ )

}cout

<< res << endl;

return

0 ;}

字串 字尾自動機

struct sam void extend int c if p 0 int q nxt p c if len p 1 len q int v siz mc nxt v nxt q len v len p 1 lnk v lnk q cnt v 0 while p 0 nxt p c q lnk ...

回文自動機

回文自動機,又叫回文樹,是由俄羅斯人 mikhailrubinchik於2014年夏發明的 這是一種比較新的資料結構,在原文中已有詳細介紹與 實現。回文樹其實不是嚴格的樹形結構,因為它有是兩棵樹,分別是偶數長度的回文樹和奇數長度的回文樹,樹中每個節點代表乙個回文串。為了方便,第一棵樹的根是乙個長度為...

回文自動機

乙個節點表示乙個回文串。tot 節點個數,即不同回文串的個數。兩棵樹,節點為0,1,所以最後計數時從2開始 n 新增的字元個數 last 新新增乙個字母後所形成的最長回文串表示的節點 nxt i c 節點i表示的回文串在兩邊新增字元c後變成的回文串編號 兒子 cnt i 節點i表示的本質不同的串的個...