SPOJ1811 字尾自動機入門

2022-04-29 23:00:19 字數 830 閱讀 4400

題目鏈結:點我點我:-)

題目描述

求兩個字串的最長公共子串的長度,字串長度小於等於5∗

105輸入格式

兩行即兩個字串

輸出格式

乙個整數,表示兩個字串的最長公共子串的長度

思路

字尾自動機裸題,入門的乙個好的講解:傳送門

感想

還是有一些地方不是很理解,特別是匹配的時候有點亂(關於step的問題)

還有乙個同學的習題錦集,可以去做一下:傳送門

(ps: 下方程式中的query函式並沒有用)

**

#include#include#include#includeusing namespace std;

#define for(i, a, b) for(int i = (a); i <= (int)(b); ++i)

#define n (500000+5)

struct suffix_automaton}}

int query(char *s)

return len;

}}sat;

char s1[n], s2[n];

int main()

ans = max(ans, len);

}printf("%d\n", ans);

return 0;

}

SPOJ 1811 LCS 字尾自動機

題意 求兩個串的最大連續子串 乙個串建sam,另乙個串在上面跑 注意如果走了suffix link,sum需要更新為t u val 1 suffix link有點像失配吧,當前狀態s走不了了就到suffix link指向的狀態fa上去,fa是s的字尾所以是可行的,並且有更多走的機會 include ...

SPOJ 1811 LCS 字尾自動機

題意 求兩個串的最大連續子串 乙個串建sam,另乙個串在上面跑 注意如果走了suffix link,sum需要更新為t u val 1 suffix link有點像失配吧,當前狀態s走不了了就到suffix link指向的狀態fa上去,fa是s的字尾所以是可行的,並且有更多走的機會 include ...

SPOJ8222 字尾自動機

給出乙個字串,求這個字串長度為1 n的子串的最大出現次數 對於長度為x的子串的答案就是所有長度 x的結點的right值的最大值 於是就從反向字尾樹的葉子開始,定義每個關鍵節點的right初始都為1,然後順著求出所有節點的子樹和就可以了 這裡用到了拓撲排序預處理 於是可以很方便的求出right陣列 或...