题目大意:给你两个1~n的排列,求他们的LCS。 解题思路:由于是1~n的排列,每个数会且只会出现1次。我们可以把一个序列映射成1,2,3,4……然后将另一个序列按照这个映射进行改变。由于前一个序列已经有序,那么后一个序列的最长上升子序列(LIS)肯定是前一个的子序列,由于LIS最长,所以它的值也是 ...
分类:
其他好文 时间:
2017-08-05 21:16:09
阅读次数:
162
最长公共子序列(LCS) 以51nod1006为例记:xi x序列的前i个字符(前缀)yj y序列的前j个字符(前缀)假设z是LCS(x,y) 若xm=yn(最后一个字符相同),则不难用反证法证明:该字符必须是x与y的任一最长公共子序列z(设长度为k)的最后一个字符,即zk=xm=yn 且显然有zk ...
分类:
其他好文 时间:
2017-08-05 15:36:47
阅读次数:
182
subarray sum 问题常用hashmap, 存count 值和坐标, 动归的感觉啊 要用 preSum.put(0, 1); 是得result 加的值可以来自map中的多个. 不能 if (sum == k) { result++; } 因为: Input:[0,0,0,0,0,0,0,0, ...
分类:
其他好文 时间:
2017-08-03 23:43:52
阅读次数:
177
思路: 先想到递归, 但是1要求是count, 2画图发现有重叠递归的部分, 可以使用记忆化搜索记录中间值, 所以想到动归 记忆化搜索常用分治法, 将回溯后的值存入map: ...
分类:
其他好文 时间:
2017-08-03 22:12:46
阅读次数:
119
子串就是要连在一起的,而子序列就是满足这同时在1-n的母串中存在就好了。 比如abcdefg 子串有abc 子序列acdfg 动态规划 假设Z=<z1,z2,?,zk>是X与Y的LCS, 我们观察到 如果Xm=Yn,则Zk=Xm=Yn,有Zk?1是Xm?1与Yn?1的LCS; 如果Xm≠Yn,则Zk ...
分类:
其他好文 时间:
2017-08-03 21:52:09
阅读次数:
142
二分法: 动归: 最大, 最小, 不能排序, 而且是求区间和的改写, 先考虑用一维动归, dp[m]表示分为m组, 写不出状态转移方程. 并且, 这是最大值最小的问题, 先找最大, 再找最小, 所以用二维数组, 题中就是组数, 和第几个人是变量, 因此dp[m][n] 表示将n个人分为m组的结果值, ...
分类:
其他好文 时间:
2017-08-03 20:30:40
阅读次数:
150
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 Input 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) Ou ...
分类:
其他好文 时间:
2017-08-03 11:11:07
阅读次数:
113
名词解释: 一串数字比如1、5、3、6、9、8、10,它的子序列是从左到右不连续的若干个数,比如1、5、6,3、9、8、10都是它的子序列。 最长上升子序列即从左到右严格增长的最长的一个子序列,1、5、6、9、10就是这个序列的一个最长上升子序列。 给出若干序列,求出每个序列的最长上升子序列长度。 ...
分类:
其他好文 时间:
2017-08-03 09:58:33
阅读次数:
165