摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3926 【题意】 给定一棵树,每个节点都有相应的颜色,且保证叶子数不超过20,问有多少条本质不同的颜色路径。 【思路】 从每个叶子开始dfs,构建广义后缀自动机,答案为l[i]-l[fa[
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3998 【题意】 询问排名第k的子串是谁,0代表相同子串不同位置算作相同,1代表相同子串不同位置算作不同。 【思路】 0的情况和这个题一样每个子串不同位置出现次数算作1; 至于1,统计va
阅读全文
摘要:【题意】 多串求LCS。 【思路】 主要是想找一下SAM的优越感 :) velui good 后缀数组划分height需要注意不少细节 <_<,然后不停debug 【代码】 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 u
阅读全文
摘要:3160 最长公共子串 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 输入描述 Input Description 读入两个字符串 输出描述 Output Description 输出最长公共子串的长度 样例输入 Sample Input yesho
阅读全文
摘要:【题目链接】 http://www.spoj.com/problems/SUBLEX/en/ 【题意】 给定一个字符串,询问次序为k的子串。 【思路】 SAM,名次 建好SAM后求出每个结点根据trans转移向下统计有多少与该结点有相同前缀的子串,每个结点只算一个,因为该结点所代表的字符串集中只可能
阅读全文
摘要:【题目链接】 http://www.spoj.com/problems/LCS2/en/ 【题意】 求若干个串的最长公共子串。 【思路】 SAM+DP 先拿个串建个SAM,然后用后面的串匹配,每次将所有的匹配长度记录在状态上取min,然后对所有状态取max即答案。 需要更新fa,因为fa[p]一定比
阅读全文
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28005 【题意】 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)..F(Length(S)) 【思路】 建立一个SAM。 对
阅读全文
摘要:P1519 博彩游戏 背景 Bob最近迷上了一个博彩游戏…… 描述 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列;有M个序列,如果某个序列是产生的随机序列的子串,那么就中奖了,否则不中。Bob会告诉你这M个序列,和身上有的钱的总数N,当然还有R的范围。请你
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1030 【题意】 给n个小串,随机构造一个长为m的大串,一个串合法当且仅当包含一个或多个给定的小串,问合法串的数目。 【思路】 AC自动机+DP 首先将问题转化为求不合法的大串的数目。 将
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3415 【题意】 A与B长度至少为k的公共子串个数。 【思路】 基本思想是将AB各个后缀的lcp-k+1的值求和。首先将两个字符串拼接起来中间用未出现的字符隔开,划分height数组,这首先保证了每一组中字符串之间的公共子串至少有k
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3294 【题意】 多个字符串求出现超过R次的最长公共子串。 【思路】 二分+划分height,判定一个组中是否包含不小于R个不同字符串的后缀。 需要注意的有: 1) c[]尽量开大,字符范围为“偏移”之后的范围。 2) 用kase作
阅读全文
摘要:以下模板单单注释了如何使用,算法详解可参考 罗穗骞《后缀数组——处理字符串的有力工具》 算法注释: #include<cstdio> #include<cstring> #include<iostream> #define FOR(a,b,c) for(int a=(b);a<=(c);a++) u
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=2774 【题意】 A & B的最长公共子序列。 【思路】 拼接+height数组。将AB拼接成一个形如A$B的串,枚举height数组并判断sa[i]是否与sa[i-1]分别属于两个不同的字符串,如果是则比较得ans。 时间复杂度为
阅读全文
摘要:Power StringsTime Limit: 3000MSMemory Limit: 65536KTotal Submissions: 39291Accepted: 16315DescriptionGiven two s...
阅读全文
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12406 【题意】 求最长回文子串。 【思路】 将字符串反向拼接在后,中间用一个没有出现的字符隔开,则问题转化为求新字符串两个特定后缀的lcp,枚举对称点i,对称数
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3261 【题意】 至少出现k次的可重叠最长子串。 【思路】 二分长度+划分height,然后判断是否存在一组的数目不小于k即可。 需要注意的是:用末尾添0的方法解决n==1时的RE问题,但是在can中需要忽略height[0]且考虑
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=1743 【题意】 求不可重叠最长重复子串。 2015-11-27 【思路】 1) 据题意处理字符串 2) 后缀数组。二分长度k,问题成为了判定是否存在两个及以上长度不小于k且互不重叠的子串。根据height数组划分后缀,满足两个条件
阅读全文
摘要:Keywords SearchTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 46676Accepted Submission(s): 1485...
阅读全文
摘要:Revenge of Fibonacci Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 204800/204800 K (Java/Others) ...
阅读全文
摘要:Hat’s Words Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) ...
阅读全文