2185 最长公共上升子序列

 时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 钻石 Diamond

题目描述 Description

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

输入描述 Input Description

第一行N,表示A,B的长度。
第二行,串A。
第三行,串B。

输出描述 Output Description

输出长度。

样例输入 Sample Input

4
2 2 1 3
2 1 2 3

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

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的一维求法相关推荐

  1. CODEVS 1408 最长公共子序列

    题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对 ...

  2. 最长公共上升子序列 LCIS

    关于子序列什么什么的问题,以前一直没怎么在意过,直到省赛突然考了一个赤裸裸的LCIS,这下才着急了,因为忘记怎么做了,而且模版也没有带.从第三名一直掉到第11名,而且超上来的,全都是会做这题的o(╯□ ...

  3. 【动态规划】最长公共上升子序列

    问题 F: [动态规划]最长公共上升子序列 时间限制: 5 Sec  内存限制: 64 MB 提交: 34  解决: 9 [提交] [状态] [命题人:admin] 题目描述 研究发现,大猩猩的基因序 ...

  4. BNUOJ 4215 最长公共连续子序列

    最长公共连续子序列 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class na ...

  5. ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)

    Greatest Common Increasing Subsequence 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...

  6. 最长公共上升子序列(LCIS)

    题意: 求最长公共上升子序列 题解: 最长公共上升子序列 = 最长公共子序列(LCS)与最长上升子序列(LIS) LCS核心代码: for(int i=1;i<=n;i++){for(int j ...

  7. UVA12511 - Virus(DP+最长公共上升子序列)

    题目链接: https://vjudge.net/problem/UVA-12511 题目大意: 给定两个序列,求出两个序列的最长公共上升子序列(严格上升). 解题过程: 比赛的时候没有做出来,非常咸 ...

  8. HDU 4512 吉哥系列故事――完美队形I(最长公共上升子序列)

    吉哥系列故事--完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  9. 最长上升子序列、最长公共子序列、最长公共上升子序列(LIS、LCS、LCIS)

    LIS.LCS.LCIS 最长上升子序列LIS 最长公共子序列LCS 最长公共上升子序列LCIS 最长上升子序列LIS 题目链接:AcWing895. 最长上升子序列 这里只说明 O ( n 2 ) ...

最新文章

  1. 2019金融科技风往哪儿吹?蚂蚁金服联合20余家金融机构预测新年热点:5G、区块链上榜...
  2. DropDownList设置选定项,设置选择项,最安全的方法
  3. 受 SQLite 多年青睐,C 语言到底好在哪儿?
  4. winpcap基本原理及常见应用_碳十四测年的基本原理和常见应用谬误
  5. 最小二乘法拟合直线 c++程序
  6. Programming Ruby学习笔记一
  7. 创建类(点击获得位置信息)—ArcGIS API for JavaScript
  8. 第二阶段冲刺报告(三)
  9. mysql spider引擎安装_mysql spider 引擎的使用
  10. python练习集100题_Python练习集100题
  11. linux pptp服务器安装
  12. 计算机要重启电脑才能检测出u盘启动,电脑使用U盘需要重启才能识别分析及解决措施...
  13. 4.7/4.8 磁盘挂载
  14. 办公小技巧:excel删除重复项
  15. SAP 针对国家 country, 维护税码 tax code
  16. 巴比特 | 元宇宙每日必读:3个月销售额近3个亿,虚拟偶像的“钱途”真的是一片光明吗?...
  17. 论文网站及使用方法(ResearchGate、Sci-Hub等)
  18. Linux 浏览器访问PHP显示源码
  19. c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...
  20. 这么简单的抓包神器?15块钱?两块钱就搞定!

热门文章

  1. 金融计算器 npv_一个工具箱 之 净现值(NPV)计算器
  2. PyCharm的光标插入与覆盖模式
  3. python学习-列表解析、字典解析
  4. java for 循环执行顺序
  5. php zhegnze_php 正则表达式
  6. linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc
  7. android中开启线程处理,Android线程与消息处理
  8. CASE_02 基于FPGA的数字钟万年历
  9. 服务器双网卡设置安全_服务器硬件介绍之服务器主板
  10. 「第四篇」电赛控制题可以准备一些什么?