
动态规划--最长上升子序列
focus_best
这个作者很懒,什么都没留下…
展开
-
UVA 10154 Weights and Measures(贪心+DP最长上升子序列)
UVA 10154 Weights and Measures(贪心+DP最长上升子序列)http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1095题意: 有n只乌龟,每只乌龟有一个重量属性w[i]和一个力量属性s[i],重量属性代表该乌原创 2014-10-21 23:04:08 · 1022 阅读 · 0 评论 -
POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)
POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)http://poj.org/problem?id=3903题意: 给你一个长度为n (n<=200000) 的数字序列, 要你求该序列中的最长(严格)下降子序列的长度.分析: 读取所有输入, 将原始数组逆向, 然后求最长严格上升子序列即可. 由于n的规模达到20W, 所以只能用O(nlogn)的算法求. 令g[i]==x表示当前遍历到的长度为i的所有最长上升子序列原创 2014-11-05 15:15:20 · 1140 阅读 · 0 评论 -
POJ 3903 Stock Exchange (LIS:最长上升子序列)
POJ 3903 Stock Exchange (LIS:最长上升子序列)http://poj.org/problem?id=3903题意: 给你一个长度为n (n<=100000) 的数字序列, 要你求该序列中的最长(严格)上升子序列的长度.分析: 由于n的规模达到10W, 所以只能用O(nlogn)的算法求.令g[i]==x表示当前遍历到的长度为i的所有最长上升子序列中的最小序列末尾值为x.(如果到目前为止, 根本不存在长i的上升序列, 那么x==INF无穷大)假设当前遍历到了第j个值即a原创 2014-11-05 14:44:14 · 1513 阅读 · 1 评论 -
POJ 1631 Bridging signals(LIS:最长上升子序列)
POJ 1631 Bridging signals(LIS:最长上升子序列)http://poj.org/problem?id=1631题意: (题意比较繁琐)本质就是: 给你一个长为n(n<=40000)的整数序列, 要你求出该序列的最长上升子序列LIS.分析: 如果用O(n^2)的算法的话, 可能会超时. 所以用O(n*logn)的算法.令g[i]==x表示当前遍历到的长度为i的所有最长上升子序列中的最小序列末尾值为x.(如果到目前为止, 根本不存在长i的上升序列, 那么x==INF无穷大)原创 2014-11-05 12:36:29 · 1284 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence(LIS:最长上升子序列)
POJ 2533 Longest Ordered Subsequence(LIS:最长上升子序列)http://poj.org/problem?id=2533题意: 给你一个长度为n的数字序列, 要你求该序列中的最长(严格)上升子序列的长度.分析: 解法一: O(n^2)复杂度. 令dp[i]==x 表示以第i个数字结尾的上升子序列中最长的为x长度. 初始化: dp[0]=0且dp[i]=1 i>=1时. 状态转移: dp[i] =原创 2014-11-05 11:19:32 · 1056 阅读 · 0 评论 -
POJ 1159 Palindrome(字符串变回文:LCS)
POJ 1159 Palindrome(字符串变回文:LCS)http://poj.org/problem?id=1159题意: 给你一个字符串, 问你做少需要在该字符串中插入几个字符能是的它变成一个回文串.分析: 首先把原字符串和它的逆串进行匹配, 找出最长公共子序列. 那么最长公共子序列的字符串肯定是一个回文串. 所以原串剩下的部分是不构成回文的. 我们只需要添加剩下部分的字符到对应位置, 原串自然就变成了一个回文. 所以本题的解为: n 减去 (原串与逆原创 2014-11-04 12:12:15 · 1101 阅读 · 0 评论 -
POJ 3356 AGTC(最小编辑距离)
POJ 3356 AGTC(最小编辑距离)http://poj.org/problem?id=3356题意: 给出两个字符串x 与 y,其中x的长度为n,y的长度为m,并且m>=n.然后y可以经过删除一个字母,添加一个字母,转换一个字母,三种操作得到x.问最少可以经过多少次操作分析: 我们令dp[i][j]==x表示源串的前i个字符变成目串的前j个字符需要x步操作. 初始化: dp[0][i]==i且 dp[i][0]=i. 上述前者表示添加源串原创 2014-11-04 10:29:49 · 1760 阅读 · 0 评论 -
HDU 1503 Advanced Fruits(LCS变形且输出解)
HDU 1503 Advanced Fruits(LCS变形且输出解)http://acm.hdu.edu.cn/showproblem.php?pid=1503题意: 给你两个字符串s1和s2, 要你输出它们的并串s. 其中s1是s的一个子序列且s2也是s的一个子序列且s是所有符合前面要求的最短字符串.分析: 令dp[i][j]==x表示s1串的前i个字符和s2串的前j个字符组成的串的LCS长度为x. 我们先求出LCS的dp数组值. 然后按照POJ2250:原创 2014-11-04 16:49:56 · 1131 阅读 · 0 评论 -
POJ 2250 Compromise(最长公共子序列LCS)
POJ 2250 Compromise(最长公共子序列LCS)http://poj.org/problem?id=2250题意: 给你两段由空格分隔的语句, 要你求该两段语句的最长公共子序列. 且随便输出一个解即可. 注意每个单词需要看成我们一般处理字符串子序列的一个单独字符. 即每个单词是一个整体.分析: 与往常计算最长公共子序列一样的方式即可. 然后用DFS输出序列即可.本题与POJ1458提供的解法本质一样.http://blog.youkuaiyun.com/u0134806原创 2014-11-03 17:36:20 · 2029 阅读 · 0 评论 -
POJ 1080 Human Gene Functions(求两字符串相似度:LCS变形)
POJ 1080 Human Gene Functions(求两字符串相似度:LCS变形)http://poj.org/problem?id=1080题意: 给你两个由字符A,C,G,T构造的字符串s1和s2, 现在你可以在这两个字符串中插入空格, 使得两串长相等(但是不能使得s1的空格对应s2的空格位置). 然后给你s1的特定字符对应s2中特定字符所能获得的分数矩阵: 问你最后两个字符串所能获得的最大分数是多少?分析: 本题很类似于求字符串最短编辑距离或者求原创 2014-11-04 15:02:54 · 1262 阅读 · 0 评论 -
POJ 1458 Common Subsequence(最长公共子序列LCS)
POJ 1458 Common Subsequence(最长公共子序列LCS)http://poj.org/problem?id=1458题意: 给你两个字符串, 要你求出两个字符串的最长公共子序列长度.分析: 本题不用输出子序列,很简单,直接处理即可. 首先令dp[i][j]==x表示A串的前i个字符和B串的前j个字符的最长公共子序列长度为x. 初始化: dp全为0. 状态转移: If A[i]==B[j] then原创 2014-11-03 15:14:57 · 7054 阅读 · 0 评论 -
HDU 1423 Greatest Common Increasing Subsequence(最长公共上升LCIS)
HDU 1423 Greatest Common Increasing Subsequence(LCIS)http://acm.hdu.edu.cn/showproblem.php?pid=1423题意: 给你两个数字组成的串a和b,要你求出它们的最长公共严格递增子序列的长度(LCIS).分析: 首先我们令f[i][j]==x表示是a串的前i个字符与b串原创 2014-11-13 23:36:08 · 1735 阅读 · 0 评论 -
HDU 4512 吉哥系列故事——完美队形I(LCIS最长公共上升子序列)
HDU 4512 吉哥系列故事——完美队形I(LCIS最长公共上升子序列)http://acm.hdu.edu.cn/showproblem.php?pid=4512题意: 吉哥这几天对队形比较感兴趣。 有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则称之为完美队形: 1、挑出的人保持他们在原队形的相对顺序不变; 2、左右对称,假设有m个人形成新的队形,原创 2014-11-14 11:26:55 · 1311 阅读 · 0 评论 -
HDU 1025 Constructing Roads In JGShining's Kingdom(构建道路:LIS问题)
HDU 1025 Constructing Roads In JGShining's Kingdom(构建道路:LIS问题)http://acm.hdu.edu.cn/showproblem.php?pid=1025题意: 有2n个点分布在平行的两条直线上, 上面那条是富有城市的1到n个点(从左到右分布), 下面那条是贫穷城市1到n个点(从左到右分布). 现在给出每个贫穷城市需要连接的富有城市的编号, 即(i,j)表示i贫穷城市只能连接j号富有城市 , 问你最多能构建几条贫穷城市到富有城市原创 2014-11-06 11:02:37 · 1210 阅读 · 1 评论