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

题目链接:

https://vjudge.net/problem/UVA-12511


题目大意:

给定两个序列,求出两个序列的最长公共上升子序列(严格上升)。


解题过程:

比赛的时候没有做出来,非常咸鱼的一场比赛,当时是想错了状态。当时想的状态是定义dp[i][j],意味以第一个串第前i个元素,第二个串前j个元素的最长公共上升子序列长度。

但是这样定义状态有后效性,比如当前我知道dp[i][j]要以这个状态进行转移的话,需要他是以那个状态转移而来的,换句话说,我转移的时候要知道他是以前j个数中那一个结尾的。

如果换一种方式,dp[i][j]代表以第一个序列前i个元素并且以第i个结束,第二个序列前j个元素并且以第j个元素结尾的最长上升子序列的长度。

这样加入的限制太多,不容易找出状态转移方程,或者转移起来太麻烦。


题目分析:

这里以dp[i][j]表示第一个序列中前i个元素,第二个序列前j个元素并且以第j个元素为结尾的最长上升子序列。

这样对比前两种状态表示方式有两种好处,一是无后效性,dp[i][j]的第二维就确定了这个序列是以那一个元素结尾。二是容易进行转移,对于dp[i][j]可由两种方式转移而来:

dp[i][j]={dp[i1][j],max(dp[i1][k])+1,a[i]b[i]k[1,j1]b[k]<b[j]a[i]=b[i]

这里的k可以在循环中找出,时间复杂度为O(n2).


AC代码:

#include <bits/stdc++.h>
using namespace std;const int MAX = 1123;int dp[MAX][MAX], a[MAX], b[MAX];int main() {int T;scanf("%d", &T);while (T--) {int n, m;scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);}scanf("%d", &m);for (int i = 1; i <= m; i++) {scanf("%d", &b[i]);}memset(dp, 0, sizeof(dp));for (int i = 1; i <= n; i++) {int maxn = 0;for (int j = 1; j <= m; j++) {//不相等时的转移dp[i][j] = dp[i-1][j];//更新maxn变量,表示当前小于a[i]的dp[i-1][k]的最大值if (a[i] > b[j] && maxn < dp[i-1][j])maxn = dp[i-1][j];//相等的话if (a[i] == b[j])dp[i][j] = maxn+1;}}int ans = 0;for (int i = 1; i <= m; i++) {ans = max(ans, dp[n][i]);}printf("%d\n", ans);}
}

转载于:https://www.cnblogs.com/ACMFish/p/7222830.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java笔记06-Map集合

Map集合 学习目标 能够说出Map集合特点使用Map集合添加方法保存数据使用”键找值”的方式遍历Map集合使用”键值对”的方式遍历Map集合能够使用HashMap存储自定义键值对的数据能够使用HashMap编写斗地主洗牌发牌案例 Map集合概述 啥也不用说,Map集合就相当于python中的字典…

理解什么是前后端分离

HTML、CSS、JS。 AJAX或Fetch。 学习一个前端的框架&#xff0c; React或者Vue或者Angularjs2都可以。 学会一个前端的路由框架&#xff0c; 如React-Router或者Vue-Router。 在学会3的基础上你肯定已经搭建好前端的开发环境了&#xff0c;所有和后端的交互走AJAX或者Fetch…

帧间、帧内像素块预测

一、像素块预测 H.264/ AVC标准中的基本预测技术是基于块&#xff0c;而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率&#xff0c;这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测&#xff0c;以树结构的方式来组织…

高性能mysql 第10章 复制

复制功能不仅能够构建高可用的应用&#xff0c;同时也是高可用性&#xff0c;可扩展性&#xff0c;灾难恢复&#xff0c;备份以及数据仓库等工作的基础。 mysql支持两种复制方式&#xff1a;基于语句的复制和基于行的复制。基于语句的复制&#xff08;也成为逻辑复制&#xff0…

vb6在后台将窗体保存到图片_如何将寺库网多个商品图片一键分类保存到一个目录...

寺库网是全球最大的奢侈品网上在线购物平台&#xff0c;那么我们怎样可以从寺库网上一键批量采集到多个宝贝商品图片&#xff0c;并分类保存到电脑呢&#xff1f;今天小编给大家带来一款专业电商图片链接采集软件【载图助手】&#xff0c;它支持平台高达141个&#xff0c;均可支…

Java笔记07-List、Set、数据结构、Collections

Java笔记07-List、Set、数据结构、Collections 主要内容 数据结构List集合Set集合Collections 第一章 数据结构 2.1 数据结构有什么用&#xff1f; 当你用着java里面的容器类很爽的时候&#xff0c;你有没有想过&#xff0c;怎么ArrayList就像一个无限扩充的数组&#xff…

Apache安装问题:configure: error: APR not found . Please read the documentation

参考&#xff1a;http://cuisuqiang.iteye.com/blog/2068794 http://www.cnblogs.com/Anker/p/3355573.html pcre: https://ftp.pcre.org/pub/pcre/ http://www.linuxidc.com/Linux/2012-06/62289.htm 1. 不赞成去卸载httpd的东西。 2. server上可以存在多个apache。一个是rpm&…

浮动与定位

2019独角兽企业重金招聘Python工程师标准>>> 一.浮动:float:一个元素浮动时,其他内容会"环绕"该元素. 浮动元素的外边距不会合并浮动的元素不能超出其包含快的内边界浮动元素彼此会避免重叠浮动元素的顶端不能比之前所有浮动元素或块级元素的顶端更高如果…

驱动级的自动按键_Aqara全自动智能推拉锁D100,体验全自动开门的便捷

大家好&#xff0c;我是梦想是个猪&#xff0c;今天为大家带来的是一篇智能门锁的使用体验。前言家里的这张门陆陆续续的换了好几把智能门锁了&#xff0c;也体验了好几种不同的开锁方式。最开始开发商给安装的是一把指纹和把手分离的那种款式&#xff0c;开锁的时候需要先输入…

码率问题

帧率影响的是每帧的额定比特数 我说的帧率是编码帧率&#xff0c;不是采集帧率。对于一个采集后的序列&#xff0c;MAD 只跟参考帧有关。而编码帧率与参考帧无关&#xff0c;因此编码帧率不影响 MAD。 ———————————————————————————————————…

Java笔记08-Map详解

第一章 Map集合 1.1 概述 现实生活中&#xff0c;我们常会看到这样的一种集合&#xff1a;IP地址与主机名&#xff0c;身份证号与个人&#xff0c;系统用户名与系统用户对象等&#xff0c;这种一一对应的关系&#xff0c;就叫做映射。Java提供了专门的集合类用来存放这种对象…

Node.js的helloworld 程序

用文本编辑器&#xff0c;如npp,键入例如以下代码&#xff0c;存储成hello.js console.log(hello) console.log(hello %s->%d,jeapedu, 1941847311) cmd进入dos。切入hello.js所在文件夹。运行node.js程序 node hello.js执行结果例如以下所看到的&#xff1a; C:\nodeS>n…

深度学习综述

摘要&#xff1a; 深度学习可以完成需要高度抽象特征的人工智能任务&#xff0c;如语音识别、图像识别和检索、自然语言理解等。深层模型是包含多个隐藏层的人工神经网络&#xff0c;多层非线性结构使其具备强大的特征表达能力和对复杂任务建模能力。训练深层模型是长期以来的难…

mac svn工具_Cornerstone 4 for mac(svn管理工具)

Cornerstone 4 for mac是全新版本的svn管理工具&#xff0c;使用cornerstone for mac 特别版建立的版本控制更利于使用&#xff0c;而且cornerstone 4 特别版全面支持Subversion的功能&#xff0c;这里准备了最新版本的cornerstone for mac 特别版&#xff0c;无需激活&#xf…

I帧、B帧和P帧的特点和编码的基本流程

I帧、B帧和P帧的特点: I帧:帧内编码帧I帧特点:1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;2.解码时仅用I帧的数据就可重构完整图像;3.I帧描述了图像背景和运动主体的详情;4.I帧不需要参考其他画面而生成;5.I帧是P帧和B帧的参考帧(其质量直接影响到同组…

Java笔记11-【异常、线程】

主要内容 异常、线程 第一章 异常 1.1 异常概念 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的…

摘抄自知乎的redis相关

1.知乎日报的基础数据和统计信息是用 Redis 存储的&#xff0c;这使得请求的平均响应时间能在 10ms 以下。其他数据仍然需要存放在另外的地方&#xff0c;其实完全用 Redis 也是可行的&#xff0c;主要的考量是内存占用。就使用经验而言&#xff0c;Redis 的数据结构很丰富&…

Java微信开发_00_资源汇总贴

1.微信公众平台技术文档&#xff08;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432&#xff09; 2.微信企业号开发接口文档&#xff08;http://qydev.weixin.qq.com/wiki/index.php?title%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8&#xff09; 3.企业微…

webgl获取鼠标形状_三模无线搭配对称手型设计,游戏致胜利器,ROG烈刃2无线鼠标...

要想有效地提升游戏体验&#xff0c;我认为除了电脑主机本身的硬件配置要尽可能的硬核之外&#xff0c;玩游戏时所选配的鼠标、键盘等外设的作用也是不可忽视的&#xff0c;所以很多比较注重游戏体验的游戏爱好者都会选择一款自己用着比较顺手的游戏外设装备。我这次入手的华硕…

牛人学习h264运动估计的方法

转载自&#xff1a;http://bbs.chinavideo.org/forumdisplay.php?fid29 Chinavideo&#xff0c;一个非常棒的学习论坛 从答辩结束(2008-12-13)起就想写一篇文章给学习运动估计的朋友们&#xff0c;因为我知道有很多正在写论文的朋友们&#xff0c;特别是正在入门的朋友们&…