spoj
asdfgh0308
这个作者很懒,什么都没留下…
展开
-
spoj1812 Longest Common Substring II(LCS2),后缀自动机
1811LCS的升级版。用每个串在自动机上跑一遍,原创 2014-08-15 23:52:47 · 815 阅读 · 0 评论 -
spoj1811 Longest Common Substring(LCS),后缀自动机
spoj1811LCS问两个字符串最长公共子串。做法很简单。匹配成功,则tl++,失败,从父指针回退,tl=t[now].len。从这题可以清楚了解后缀自动机fa指针的性质:指向一个状态,这个状态的接受串s[x..x+i]是与当前状态的接受串后缀s[j-i..j]匹配是最长的一个。这里是不是发现了一个和KMP很像的性质?KMP在失配时通过next数组回退,那么这原创 2014-08-15 20:43:30 · 931 阅读 · 0 评论 -
spoj 8222 Substrings(NSUBSTR),后缀自动机
spoj 8222 Substringsf[i]指长度为i的串出现次数的最大值。这里的不同出现指,可以有重复串,只要起始位置不同就视为不同的出现。求f[1]..f[lenth]。 怎么求可重复的一个串出现了多少次。LCS那篇里提到了,通过fa指针回退,会回到一个状态,这个状态的接受串与当前状态的接受串后缀是相同的。那么,设t[i].fa=j,那么i状态的接受串也必定出现在原创 2014-08-17 18:25:58 · 1359 阅读 · 0 评论 -
spoj7258 Lexicographical Substring Search(SUBLEX),后缀自动机
spoj7258. Lexicographical Substring Search 求一个串的所有不同子串中字典序第k大的。利用后缀自动机,拓扑排序后通过子边dp,可以计算当前状态可接受的后缀还有多少个串。然后不断转移即可。由于卡常数,需要两个优化:1.预处理将空儿子去掉,减少转移复杂度。2.优化输出,将要输出的串保存在一个char数组中,最后一起输出。会比一原创 2014-08-17 13:43:46 · 676 阅读 · 0 评论