摘要: 题意: 找一个最长(假设长度为2N-1)的子序列,使得前N个元素递增,后N个元素递减。 思路: LIS。从1-n遍历求出最长上升子序列,再从n-1遍历求出逆序的最长上升子序列。 用最朴素的LIS算法是O(n*n),这一题就tle了。于是网上搜索出来一种O(nlogn)的算法。 阅读全文
posted @ 2012-11-16 22:38 kedebug 阅读(1636) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定2个字符串a, b,求b在a中出现的次数。要求可以是不连续的,但是b在a中的顺序必须和b以前的一致。 思路: 类似于数字分解的题目。dp[i][j]表示:b的前j个字符在a的前i个字符中出现的次数。 似乎这种表示方法司空见惯,但是一开始我还真没能搞懂如何去递推。事情的真相是: 如果a[i] == b[j]则 dp[i][j] = dp[i-1][j] + dp[i-1][j-1] 如果a[i] != b[j]则 dp[i][j] = dp[i-1][j] 阅读全文
posted @ 2012-11-16 11:26 kedebug 阅读(4753) 评论(0) 推荐(0) 编辑