引言子序列和子字符串或者连续子集的不同之处在于,子序列不需要是原序列上连续的值。对于子序列的题目,大多数需要用到DP的思想,因此,状态转移是关键。这里摘录两个常见子序列问题及其解法。例题1, 最长公共子序列我们知道最长公共子串的求法,先温习一下,它的求法也是使用DP思想,对于 字符串s1 和字符串s...
分类:
其他好文 时间:
2014-07-29 13:58:08
阅读次数:
255
UVA 1400 - "Ray, Pass me the dishes!"
题目链接
题意:给定一个序列,每次询问一个[L,R]区间,求出这个区间的最大连续子序列和
思路:线段树,每个节点维护3个值,最大连续子序列,最大连续前缀序列,最大连续后缀序列,那么每次pushup的时候,根据这3个序列去拼凑得到新的一个结点即可
代码:
#include
#include
...
分类:
其他好文 时间:
2014-07-29 13:22:57
阅读次数:
223
最长上升子序列。做这道题之前先做了2533,再看这道题,感觉两道题就一模一样,于是用2533的代码直接交, TLE了;回头一看,数据范围。2533 N:0~1000;3903 N :1~100000。原因终归于算法时间复杂度。也借这道题学习了nlgn的最长上升子序列。(学习链接:http://blo...
分类:
其他好文 时间:
2014-07-28 21:26:44
阅读次数:
275
题目大意:
在一个序列上每次修改一个值,然后求出它的最大的子序列和。
思路分析:
首先我们不考虑不成环的问题。那就是直接求每个区间的最大值就好了。
但是此处成环,那么看一下下面样例。
5
1 -2 -3 4 5
那么你会发现 max = sum - min
也就是和减去最小区间和也可以得到。
所以我们最后要得到的就是两个东西。注意题目中说的不能全部取得。所以还要判断...
分类:
其他好文 时间:
2014-07-28 16:24:13
阅读次数:
244
题目:给你两个字符串,求一个最短的串,使得这两个串是目标串的子串。
分析:DP,最大公共子序列。最长目标串的长度为两串和减去最大公共子序列。
最长目标串的数量就是所有长度相同的情况的数量加和(路径的加和)
状态f(i,j)为串str1的前i个字符...
分类:
其他好文 时间:
2014-07-28 16:23:13
阅读次数:
390
用两种常见的判别收敛的方法判断一个递归数列的收敛性。常见的判别法有:数列单调且有界则收敛;在实数域中该数列是柯西数列(也叫基本序列)则收敛;奇偶子序列均收敛且极限相等则数列收敛(可以推广到任意固定间隔的子序列均收敛且极限相等则数列收敛)。最后从该极限延伸到压缩原理。
分类:
其他好文 时间:
2014-07-27 21:52:49
阅读次数:
272
求子矩阵的最大和对于样例:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其最大子矩阵为9 2-4 1-1 8这个子矩阵的和为15想明白后,这是个最大连续子序列的变形sum[k]存放的是矩阵中第k列从第i行到第j行的和每次求出sum数组的最大...
分类:
其他好文 时间:
2014-07-27 21:51:19
阅读次数:
259
FatMouse's SpeedTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9069Accepted Submission(s): 4022Sp...
分类:
其他好文 时间:
2014-07-27 21:29:55
阅读次数:
275
题意:找出两个文本的最长公共子序列,输出序列
思路:最长公共子序列(LCSL),使用标记数组,递归输出最长公共子序列。
#include
#include
#include
#include
using namespace std;
const int MAXN = 105;
char s1[MAXN][MAXN], s2[MAXN][MAXN], s[MAXN]...
分类:
其他好文 时间:
2014-07-27 11:49:13
阅读次数:
204
hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)...
分类:
其他好文 时间:
2014-07-27 11:32:02
阅读次数:
201