codevs 2185 最长公共上升子序列--nm的一维求法
2185 最长公共上升子序列
熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了。
小沐沐说,对于两个串A,B,如果它们都包含一段位置不一定连续的数字,且数字是严格递增的,那么称这一段数字是两个串的公共上升子串,而所有的公共上升子串中最长的就是最长公共上升子串了。
奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子串。不过,只要告诉奶牛它的长度就可以了。
第一行N,表示A,B的长度。
第二行,串A。
第三行,串B。
输出长度。
4
2 2 1 3
2 1 2 3
2
1<=N<=3000,A,B中的数字不超过maxlongint
/*思路:f[]数组里面储存着到b的第i项,a从1--n的且以b[i]结尾的最长公共上升子序列长度,问题一: dp方程说明:if(a[i]>b[j]&&maxx<f[j])更新可以用于更新b序列与a序列前i位的最长长度的最大值 maxx=f[j];if(a[i]==b[j]) f[j]=maxx+1;因为j是内循环,所以如果maxx被更新了,则现在的b[j]是等于a[i],一定比更新maxx的bj大,所以可以直接加。 问题二: 为什么可以改为一维?:类似于背包问题,假如用f[i][j]表示到了a的第i项(不一定为ai结尾),以b的第j项结尾的最长长度,那么 f[i][j],如果ai!=bj,那么f[i-1][j]就是最佳选择,而且一定比f[i-2][j]优,而当ai==bj的时候,我们用maxx更新f[i][j],与之前的无关,那么可见F[i][j]只与i-1的值有关,那么就可以用一唯数组了。 */ #include<iostream> using namespace std; #include<cstdio> const int N=3001; int a[N],b[N],f[N],maxx; int main() {ios::sync_with_stdio(false);int n;cin>>n;for(int i=1;i<=n;++i)cin>>a[i];for(int i=1;i<=n;++i)cin>>b[i];for(int i=1;i<=n;++i){maxx=0;for(int j=1;j<=n;++j){if(a[i]>b[j]&&maxx<f[j])maxx=f[j];if(a[i]==b[j]) f[j]=maxx+1;}}maxx=0;for(int i=1;i<=n;++i)/*因为对于f[]数组我们是规定了结尾,所以f[n]不一定是最优值,所以要全搜索一次*/maxx=max(f[i],maxx);cout<<maxx<<endl;return 0; }
View Code
转载于:https://www.cnblogs.com/c1299401227/p/5323569.html
codevs 2185 最长公共上升子序列--nm的一维求法相关推荐
- CODEVS 1408 最长公共子序列
题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对 ...
- 最长公共上升子序列 LCIS
关于子序列什么什么的问题,以前一直没怎么在意过,直到省赛突然考了一个赤裸裸的LCIS,这下才着急了,因为忘记怎么做了,而且模版也没有带.从第三名一直掉到第11名,而且超上来的,全都是会做这题的o(╯□ ...
- 【动态规划】最长公共上升子序列
问题 F: [动态规划]最长公共上升子序列 时间限制: 5 Sec 内存限制: 64 MB 提交: 34 解决: 9 [提交] [状态] [命题人:admin] 题目描述 研究发现,大猩猩的基因序 ...
- BNUOJ 4215 最长公共连续子序列
最长公共连续子序列 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class na ...
- ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)
Greatest Common Increasing Subsequence 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...
- 最长公共上升子序列(LCIS)
题意: 求最长公共上升子序列 题解: 最长公共上升子序列 = 最长公共子序列(LCS)与最长上升子序列(LIS) LCS核心代码: for(int i=1;i<=n;i++){for(int j ...
- UVA12511 - Virus(DP+最长公共上升子序列)
题目链接: https://vjudge.net/problem/UVA-12511 题目大意: 给定两个序列,求出两个序列的最长公共上升子序列(严格上升). 解题过程: 比赛的时候没有做出来,非常咸 ...
- HDU 4512 吉哥系列故事――完美队形I(最长公共上升子序列)
吉哥系列故事--完美队形I Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- 最长上升子序列、最长公共子序列、最长公共上升子序列(LIS、LCS、LCIS)
LIS.LCS.LCIS 最长上升子序列LIS 最长公共子序列LCS 最长公共上升子序列LCIS 最长上升子序列LIS 题目链接:AcWing895. 最长上升子序列 这里只说明 O ( n 2 ) ...
最新文章
- 2019金融科技风往哪儿吹?蚂蚁金服联合20余家金融机构预测新年热点:5G、区块链上榜...
- DropDownList设置选定项,设置选择项,最安全的方法
- 受 SQLite 多年青睐,C 语言到底好在哪儿?
- winpcap基本原理及常见应用_碳十四测年的基本原理和常见应用谬误
- 最小二乘法拟合直线 c++程序
- Programming Ruby学习笔记一
- 创建类(点击获得位置信息)—ArcGIS API for JavaScript
- 第二阶段冲刺报告(三)
- mysql spider引擎安装_mysql spider 引擎的使用
- python练习集100题_Python练习集100题
- linux pptp服务器安装
- 计算机要重启电脑才能检测出u盘启动,电脑使用U盘需要重启才能识别分析及解决措施...
- 4.7/4.8 磁盘挂载
- 办公小技巧:excel删除重复项
- SAP 针对国家 country, 维护税码 tax code
- 巴比特 | 元宇宙每日必读:3个月销售额近3个亿,虚拟偶像的“钱途”真的是一片光明吗?...
- 论文网站及使用方法(ResearchGate、Sci-Hub等)
- Linux 浏览器访问PHP显示源码
- c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...
- 这么简单的抓包神器?15块钱?两块钱就搞定!