描述有一个长为n的数列a0,a1,…,an-1。求出这个序列中最长的上升子序列长度。上升子序列指的是对于任意的i < j,都满足ai < aj的子序列。输入n = 5a = {4,2,3,1,5}输出3(a1,a2,a4构成的子序列2,3,5最长)这个问题是被称作最长上升子序列的著名问题。这一问题通...
分类:
其他好文 时间:
2014-11-15 21:38:57
阅读次数:
195
题意: 给出一个序列,问每个位置的元素,分别属于哪一类的东西。第一类 没有出现在任何的上升子序列中。 第三类 出现在所有上升子序列中 。第二类 就是剩下的了。。求两个东西 , dp[i] 表示 从1到 i 最长上升子序列的长度,dp1[i]表示从i到n 最长上升子序列的长度。设原序列最长上升子序列长...
分类:
其他好文 时间:
2014-11-14 19:30:36
阅读次数:
267
最少拦截系统
题目大意:导弹拦截系统每次拦截导弹的高度都不高于上一次拦截的高度
给你一个导弹发射高度的序列,问最少用多少了拦截系统能够完成拦截?
思路:往上很多人都说是最长上升(不降序)子序列。但是很不好理解。那么
为什么是最长上升子序列呢。
这是因为假设最长上升子序列长度为N,那么作为最长上升子序列的每个元素
右边的非最长上升子序列的元素必然是下降的。且必然是最优情况。把每个最
长上升子序列的元素作为一个拦截系统的起点,那么它右边比它本身小的下降
序列就是这个拦截系统所能拦截的导弹,到下一个最长上升子序列...
分类:
其他好文 时间:
2014-11-06 13:05:40
阅读次数:
213
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 17:21:11
阅读次数:
172
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:46:33
阅读次数:
173
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 13:04:35
阅读次数:
188
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:59:34
阅读次数:
146
题意 求一个序列的所有上升子序列中第二长的那个的长度
简单的dp d[i]表示以第i个数结尾的最长上升子序列的长度 c[i]表示到达d[i]的方法数 如序列1 1 2 d[3]=2,c[3]=2 因为选1 3位置和 2 3位置的都可以得到d[3]=2 递推过程很简单 d[i]=max{d[j]+1}其中a[i]>a[j]&&i>j
最后看d[1~n]中最大的数出现了几次 出现...
分类:
其他好文 时间:
2014-11-01 23:16:20
阅读次数:
341
题目传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18201其实是一道不算难的DP,但是搞了好久,才发现原来是题目没读清楚,囧,原序列那里简直太坑了,看了别人好多的都是用最长公共子序列,但是我用的是最长上升子序列来做,...
分类:
其他好文 时间:
2014-10-30 00:07:43
阅读次数:
257
1 for(int j=0;j h[j]){ 3 if(len[i] == len[j] + 1) cnt[i]+=cnt[j]; 4 if(len[i] 2 #include 3 using namespace ...
分类:
其他好文 时间:
2014-10-23 13:58:21
阅读次数:
183