Description "题库链接" 给定两个字符串 $A$ 和 $B$ ,求最长公共子串。 $1\leq |A|,|B|\leq 100000$ Solution 把串并起来求 $height_i$ 的最大值,其中 $[suff(sa_{i 1})\subseteq B]\oplus [suff( ...
分类:
其他好文 时间:
2018-07-07 10:39:57
阅读次数:
129
一、背包问题如何求最优解?用动态规划。 二、动态规划工作原理 动态规划先解决自问题,再逐步解决大问题。动态规划必须建立网格。 三、背包问题求解过程 1、计算每个单元格能放下的最贵的东西; 2、每行的单元格能选择的物品是当前行以及之前行的物品; 3、计算每个单元格的公式是: 四、最长公共子串(连续) ...
分类:
其他好文 时间:
2018-07-04 11:40:18
阅读次数:
142
/* 最长公共子串 用后缀自动机实现 首先建立一个串的后缀自动机 然后用另一个串在上面跑自动机即可 */ #include #include #include #include #define M 500010 using namespace std; char s[M]; int ch[M][26... ...
分类:
其他好文 时间:
2018-06-29 22:31:17
阅读次数:
233
有两个长度可能是250*250的数字串,串内元素两两不同,求最长公共子串。 常规的O(n^2)解法不论是时间或空间都无法解决,办法是转化成求最长上升子序列。 假设是有串1和串2。先给串1的元素按输入顺序来一个映射,称为映射1。比如说 1 7 5 4 8 3 9 映射成 0 1 2 3 4 5 6。那 ...
分类:
其他好文 时间:
2018-05-24 18:05:14
阅读次数:
165
题目描述 对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。这里的最长公共子串的定义为两个序列U1,U2,..Un和V1,V2,...Vn,其中Ui + 1 == Ui+1,Vi + 1 == Vi+1,同时Ui == Vi。 给定两 ...
分类:
其他好文 时间:
2018-05-12 16:49:41
阅读次数:
175
分析 首先,可以发现,区间是可以合并滴。把区间按左端点排序,对于两个区间[l1,r1]、[l2,r2],当l1=l2,那么,将它们合成一个新的区间[l1,r2]。当一个位置不属于任何一个区间时,它自己独立成为一个区间。 接着dp,保证区间是从小到大的。 设 f[i][j] 表示在从 S 第 i 个区 ...
分类:
其他好文 时间:
2018-05-12 03:12:33
阅读次数:
153
BZOJ_2946_[Poi2000]公共串_后缀数组+二分答案 Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度。 任务: l 读入单词 l 计算最长公共子串的长度 l 输出结果 给出几个由小写字母构成的单词,求它们最长的公共子串的长度。 任务: l 读入单词 l ...
分类:
编程语言 时间:
2018-05-05 21:44:57
阅读次数:
279
解题方法: 首先生成动态规划表dp,生成规则如下: 对于两个字符串str1和str2,dp[i][j]表示将str1[i]和str[j]作为公共子串最后一个字符的长度 非第一行,第一列: 如果str1[i]==str2[j],则dp[i][j] = dp[i-1][j-1]+1 如果str1[i] ...
分类:
其他好文 时间:
2018-04-29 18:38:34
阅读次数:
161
题意:给你几个字符串,让你找他们的公共子串(len >= 3, 题上写了,生物也学过#手动滑稽) 解题思路:我是拿每种case的第一个串的子串和后面串比较,注意,要按字典序排列,但是大佬说只用找后缀串就行了,至今都没看懂为什么,附上大佬链接,http://blog.sina.com.cn/s/blo ...
分类:
其他好文 时间:
2018-04-27 17:56:11
阅读次数:
131