【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=4416 【题目大意】 给出一个字符串,然后,给出一个字符串集合,问在该字符串中出现,且不在字符串集合中出现的子串总数。 【题解】 将集合中所有的子串在自动机上跑,保存匹配到的位置的最长匹配, 用于在p ...
分类:
其他好文 时间:
2016-11-16 02:03:01
阅读次数:
216
【题目链接】 http://www.spoj.com/problems/NSUBSTR/ 【题目大意】 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。 求出所有的F。 【题解】 在SAM中,一个串出现的次数就是|Right(s)|,我们按长度从小到大分配内存单位, 从后往 ...
分类:
其他好文 时间:
2016-11-16 01:59:37
阅读次数:
182
【题目链接】 http://www.spoj.com/problems/LCS2/ 【题目大意】 求n个串的最长公共子串 【题解】 对一个串建立后缀自动机,剩余的串在上面跑,保存匹配每个状态的最小值, 取最小值中的最大值即可。由于跑的地方只记录了匹配结尾的状态, 所以还需要更新parent树上的状态 ...
分类:
其他好文 时间:
2016-11-16 01:53:26
阅读次数:
244
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=4436 【题目大意】 给出一些字符串,由0~9组成,求出所有不同子串的和。 【题解】 将所有字符串添加拼接符10连接在一起建立自动机, 从起点开始遍历所有节点,就能计算所有的子串和了。注意转移的时候只 ...
分类:
其他好文 时间:
2016-11-16 01:50:54
阅读次数:
241
【题目链接】 http://codeforces.com/problemset/problem/427/D 【题目大意】 给出一个两个字符串,求出最短且在两个字符串中唯一的公共子串。 【题解】 以原字符串的两倍建立自动机,按字典序在parent树上搜索, 得到的第一个长度为n的字符串就是答案。 【代 ...
分类:
其他好文 时间:
2016-11-16 01:46:58
阅读次数:
205
【题目链接】 http://www.spoj.com/problems/SUBLEX/ 【题目大意】 给出一个字符串,求其字典序排名第k的子串 【题解】 求出sam上每个节点被经过的次数,然后采用权值线段树上查找第k大数类似的方法, 每次确定查找范围,进入相应的子树,同时输出路径上的点即可。 【代码 ...
分类:
其他好文 时间:
2016-11-16 01:46:45
阅读次数:
211
一看跟子串相关,就是后缀那一套了。想法是这样的,尽量在文本串中找到更长的子串与当前串匹配。若无法继续匹配了,则重新匹配,答案+1。这里我选择了后缀自动机,实现起来好写。 这也算是SAM的模版了叭。 ...
分类:
其他好文 时间:
2016-11-07 22:20:33
阅读次数:
281
第一部分 自动机的预备知识 自动机的功能是识别字符串,一个自动机A,若它能识别字符串S,就记为A(S)=true,否则A(S)=false。 自动机由五个部分组成,字符集alpha,状态集合state,初始状态init,结束状态集合end和状态转移函数trans。 令s,t∈state,ch∈alp ...
分类:
其他好文 时间:
2016-11-06 19:45:45
阅读次数:
305
http://poj.org/problem?id=2774 题目大意就是给两个字符串,求最长公共子串。好像可以哈希切掉,但是为了练一练后缀数组以及学一学后缀自动机,我用不同方法终于A掉了这道题。 后缀数组:就是求出height数组然后扫一遍,求出满足条件的最大值(满足条件是指height所指的两个 ...
分类:
编程语言 时间:
2016-10-23 14:03:42
阅读次数:
305
Description Input 一行,一个字符串S 一行,一个字符串S Output 一行,一个整数,表示所求值 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=500000,S由小写英文字母组成 建反向前缀树,O(N)d ...
分类:
其他好文 时间:
2016-09-17 17:44:41
阅读次数:
112