字尾自動機題目小結

2021-07-05 13:24:16 字數 974 閱讀 2934

作為乙個傻叉,這兩天才學了sam,做了幾道題。

先是模版:

//字尾自動機

//sam

//suffix automation

struct state

};state *root,*last;

state seq[maxn*2];int seq_cnt;

state *new(int _len)

void extend(int w)

else

}last=np;

}void init()

然後是一些題目

poj1509 sam求最小迴圈串(字尾自動機)

spoj1811最長公共子串問題(字尾自動機)

spoj 8222 substrings(sam)給乙個字串s,令f(x)表示s的所有長度為x的子串中,出現次數的最大值。求f(1)..f(length(s))

spoj-1812 longest common substring ii題意:求多個串的最長公共子串。

spoj 7258 sublex (sam)題目:給出乙個串,查詢字典序排在第k個的是哪個子串

hdu-4622 reincarnation 題意:給定乙個字串,長度最長為2000,有至多10000組詢問,每個詢問給定乙個區間,求出該區間內共有多少個不同的子串。

hdu4641 k-string,字尾自動機,並查集

【poj1743】musical theme 我們只在意每個節點的right最大值和最小值就行了

【bzoj3676】[apio2014]回文串 sam+manacher+倍增

我們可以發現不同的回文串其實並不多 所以用manacher找出不同的回文串然後sam找對應串就好

還聽說了乙個奇怪的資料結構回文樹(palindromic tree)

3926: [zjoi20150]諸神眷顧的幻想鄉 挺有意思的應用 加深了對sam的理解

bzoj2806(字尾自動機+dp)

字尾自動機小結

還沒寫完字尾自動機就來寫小結了 其實是莫比烏斯又推不下去了 其實還是迪哥的hhh 1,有關新建節點的幾種分類討論要記住,大概 yy 板子還是可以用的 2,字首節點指的是當前點所代表的 endpos 集合所對應的串中有乙個原串的字首。具體來說就是新建的 p 節點 3,如果維護樹形結構的話一般是 par...

廣義字尾自動機小結

字尾自動機功能很強大,但碰到多串問題就掛。廣義字尾自動機支援多串操作。思想是在每次插入乙個串後,把las設為1即可,其它操作在parent樹上進行表演。bzoj 3277 includeusing namespace std typedef long long ll const int n 3e5 ...

字尾自動機

基礎知識 step i 表示的是字串i在原字串中的位置。pareint i 表示root到parent i 的子串是root到i的最長字尾。字尾自動機遍歷可以得到原字串的所有子串。特殊技巧 一 字尾自動機的不同子串數有兩種求法 1.ans step i step parent i 1 i cnt 2...