[HDU5904]LCIS(DP)

题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 n,m<=1e5,a[i],b[i]<=1e6
分析:dp[i]表示以数字i结尾的序列最长长度
dp[a[i]]=max(dp[a[i]-1]+1,dp[a[i]])
第二个序列同理
ans=max(min(dp[k],dp1[k]))

时间: 2024-10-09 23:50:16

[HDU5904]LCIS(DP)的相关文章

HDU 5904 LCIS (DP)

题意:给定两个序列,让你找出这两个序列的LCIS的长度. 析:DP a[i] 表示以ai结尾的最大值,b[i]表示以bi结尾的最大值. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostre

POJ 2127 LCIS DP

http://poj.org/problem?id=2127 #include <iostream> #include <algorithm> #include <cstring> #include <queue> #include <cstdio> #include <map> #include <vector> using namespace std; const int N=5e2+20; const int inf

hdu-5904 LCIS(水题)

题目链接: LCIS Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 458    Accepted Submission(s): 212 Problem Description Alex has two sequences a1,a2,...,an and b1,b2,...,bm. He wants find a longest co

HDU 5904 - LCIS (BestCoder Round #87)

HDU 5904 - LCIS [ DP ]    BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式: dp[a[i]] = max(dp[a[i]], dp[a[i]-1] + 1); 发现其实可以简化为 dp[a[i]] = dp[a[i]-1] + 1:因为计算过程中dp[a[i]]不会降低 对两个序列都求一遍,然后取两者最小值的最大值 1 #include <cstdio> 2 #inc

Codeforces 10D LCIS 求最长公共上升子序列及输出这个子序列 dp

题目链接:点击打开链接 题意: 给定n长的一个序列 再给定k长的一个序列 求LCIS并输出这个子序列 如有多解输出任意解.. = - = 敲的时候听着小曲儿pre的含义还没有想清楚,万万没想到就过了... #include<stdio.h> #include<iostream> #include<string.h> #include<set> #include<vector> #include<map> #include<mat

LCIS tyvj1071 DP优化

思路: f[i][j]表示n1串第i个与n2串第j个且以j结尾的LCIS长度. 很好想的一个DP. 然后难点是优化.这道题也算是用到了DP优化的一个经典类型吧. 可以这样说,这类DP优化的起因是发现重复计算了很多状态,比如本题k的那层循环. 然后就可以用maxl标记搞一下,将O(n^3)变成O(n^2). #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> usi

Codeforces 10D LCIS 找出最长公共子和产量增加这个序列 dp

主题链接:点击打开链接 意甲冠军: 特定n长序列 给定k长序列 求LCIS并输出这个子序列 如有多解输出随意解.. = - = 敲的时候听着小曲儿pre的含义还没有想清楚,万万没想到就过了... #include<stdio.h> #include<iostream> #include<string.h> #include<set> #include<vector> #include<map> #include<math.h&g

CH5101 LCIS【线性dp】

5101 LCIS 0x50「动态规划」例题 描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了.小沐沐说,对于两个数列A和B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列,而所有的公共上升子序列中最长的就是最长公共上升子序列了.奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子序列.不过,只要告诉奶牛它的长度就可以了.数列A和B的长度

TYVJ1071 LCIS 线性DP+决策集优化

问题描述 TYVJ1071 题解 暴力\(\mathrm{DP}\) 首先,一个\(O(n^3)\)的解法: 设\(opt_{i,j}\)代表\(a\)的前\(i\)个和\(b\)的前\(j\)个的\(\mathrm{LCIS}\). 显然有: 1.\(a_i=b_j\) \[opt_{i,j}=opt_{i-1,j}\] 2.\(a_i≠b_j\) \[opt_{i,j}=max_{0 \le k < j,b_k<a_i} {opt_{i-1,k}}+1\] 于是得到代码: #include