随笔分类 - LIS&&LCS
最长上升子序列,最长公共子序列
摘要:解题思路: 根据题意,不难发现组合的元素,他们的长宽都是单调递增的,因此可以转化为最长上升子序列问题。 首先按照长度从小到大对信封进行排序,长度相同,按照宽度从大到小进行排序。因为当长度相同,因为可能会把相同长的信封当做长度不同的信封给装起来了,如果宽度从大到小排序,就不会出现覆盖长度相同的情况。
阅读全文
摘要:以[1,3,8,17,5,14,10]为例,首先我们需要开设一个栈S保存,栈中的元素S[i]代表了以S[i]结尾的长度为i+1的最长上升子序列的最小取值(0<=i)。 然后执行下列算法步骤: (图片来源:小象学院) 得到的栈的大小即是最长上升子序列的长度,需要值得注意的是栈里面的元素并不一定是真正的
阅读全文
摘要:给定一个字符串,你可以对字符串做任意改动,你可以在任意地方增加一个字符、删除一个字符或者改变一个字符。但是不同的操作所花费的代价也是不同的,增加和删除所付出的代价为1,直接改变一个字符所花费的代价为2,问最少花费多少能得到一个回文串(回文串就是从左往右读和从右往左是一样的,例如:ABCBA、HIH…
阅读全文
摘要:题目大意:就是求最长的上升子序列,输出长度。 思路:LIS水题。就是题目描述的特别长。
阅读全文
摘要:题目大意:就是说怎样建道路才使得所建道路最多。任意两天道路不能交叉。 解题思路:因为是按城市按顺序排列。所以我们只需将两个城市序号用结构体存下来。对富人城市排序。 这样就成了一个序列了,这样就成了一个LIS的裸题了。 ps:1、这题目坑的地方在于输出的地方,讲究英语语法。。。如果一条路输出road,
阅读全文
摘要:Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this
阅读全文
摘要:Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3622 Accepted Submission(s): 1872
阅读全文
摘要:This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence. InputEach sequence is described with M - its len
阅读全文
摘要:LIS(最长上升子序列) 常规的解法就是动态规划。 mx[ j ]表示长度为j的上升子序列最小的值a[i]; dp[ i ]表示前i个数的最长上升子序列长度多少。 这就是解决LIS的核心代码,时间复杂度网上的博客说复杂度是O(n2) 说实话,个人感觉没有那么高的复杂度,比如HDU-5532就可以用这
阅读全文