
LIS
文章平均质量分 52
空白君有着一把空白键blanKey
即使世界如此残酷,我们仍是努力挣扎着
/*算了,退役了,不挣扎了QWQ*/
展开
-
hdu1003 Max Sum(LIS)
最长递增子序列类型的,求最长连续和最大的序列#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std;int main() { int cas=1,t,n,sum,a;原创 2015-11-03 23:09:24 · 441 阅读 · 0 评论 -
hdu1087 Super Jumping! Jumping! Jumping!(LIS)
简单LIS#include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <algorithm> using namespace std; #define inf 0x3f3f3f3f #define maxn 1005 int dp[maxn],a[m原创 2015-11-04 23:23:29 · 429 阅读 · 0 评论 -
最长递增子序列详解(longest increasing subsequence)
发现一篇非常好的博文,分享一下。感谢joylnwang。 原文点我点我点我 对于动态规划问题,往往存在递推解决方法,这个问题也不例外。要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要先求出序列Ai-1{a1,a2,……,ai-1}中以各元素(a1,a2,……,ai-1)作为最大元素的最长递增序列,然后把所有这些递增序列与ai比较,如果某个长度为m序列的转载 2015-11-06 22:04:35 · 502 阅读 · 0 评论 -
uva10635 Prince and Princess(LCS转LIS)
明面好似是用LCS做,但是开一个(250*250)^2数组明显爆了,规模太大,而且时间复杂度肯定会超时的。看了一下其他解题报告才懂,好巧妙地转化为LIS。 思路:首先将王子的序列(也就是第一个序列)看作一个相对于公主的序列(第二个数列)是一个标准衡量的序列,就是将第一个序列按照输入的顺序定义为1,2,3,……,n,只不过值的定义不同了,就如: 第一个数列为:1,7,5,4,8,3,9 我们按这原创 2015-11-07 01:05:49 · 673 阅读 · 0 评论 -
hdu5773 The All-purpose Zero(LIS变形)
题目点我点我点我 题目大意:可以将0替换成任意interger(包括负数),在此基础上求最长递增子序列。 解题思路:无疑LIS,将所有的0全部提取出来,求出此时序列的LIS(不含0的),这是针对0在子序列的外面的情况,如0,1,2,3,0.那么如果0在子序列中间怎么办? 很简单,把读入的非0的数的值减去这个数前面0的个数即可, 如1,2,0,3,4。在提取出0后序列原创 2016-07-28 17:52:37 · 1115 阅读 · 0 评论 -
POJ 3666 Making the Grade (DP/LIS变形)
题目点我点我点我 解题思路:跟CF#714 E 基本一样,就是那题是严格递增,这题是非严格递增。 所以a[i]不需要减去i。 传送门~ /* *********************************************** ┆ ┏┓ ┏┓ ┆ ┆┏┛┻━━━┛┻┓ ┆ ┆┃ ┃ ┆ ┆┃ ━ ┃ ┆ ┆┃原创 2016-09-14 17:14:48 · 397 阅读 · 0 评论 -
Codeforces Round #371 (Div. 2) E. Sonya and Problem Wihtout a Legend (DP/LIS变形)
题目点我点我点我 题目大意:给一个序列,每次操作能对其进行加1或减1操作,求令序列严格递增的最小操作数。 解题思路:首先新的序列对于原序列来说要花费最小,所以新序列是基于原序列进行变换的(貌似这是废话=。=,额,事实没表达出这个)。 b[i]=a[i]-i,然后对b[ ] sort 一下, dp[i][j]表示处理第i个数时,第i个数是变成b[j]的最小花费原创 2016-09-14 17:02:54 · 594 阅读 · 0 评论 -
HDU 5256 序列变换 (DP/LIS变形)
题目点我点我点我 解题思路:首先是严格递增,故a[i]要减去i,然后透过几个例子就不难发现最大的非递减序列的长度len,所要求的答案就是n-len。 举个栗子:3 3 4 4 5 5 减去i后序列为 2 1 1 0 0 -1 在新的序列求出非递减序列的长度(注意!是非递减)为2,所以答案就为6-2=4. /* *******************原创 2016-09-14 18:42:23 · 463 阅读 · 0 评论 -
HDU5904 LCIS (DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5904 题目大意:给定两个序列,求最长的公共上升子序列,这个子序列公差是1. 解题思路:从前往后DP,dp[i]表示以i结尾的最长上升子序列的长度。 dp[val] = dp[val-1] + 1。分别对两个串进行DP。 然后对于每一个最长上升子序列的结尾的值i取原创 2016-10-03 13:20:22 · 386 阅读 · 0 评论