当前位置: 首页 > 编程日记 > 正文

最长公共上升子序列 LCIS

关于子序列什么什么的问题,以前一直没怎么在意过,直到省赛突然考了一个赤裸裸的LCIS,这下才着急了,因为忘记怎么做了,而且模版也没有带。从第三名一直掉到第11名,而且超上来的,全都是会做这题的o(╯□╰)o。  虽然最后还是保住了一个一等奖,不过真是太不甘心了。

这里总结一个O(nm)的算法。

设题目给出a[],b[]两个序列。f[j]表示b序列到j的时候,与a[??]序列构成最长公共上升子序列的最优解。其中a[??]序列,从1到n枚举过来。

如果某一个时刻a[i]==b[j],那么显然,我们就应该在0到j-1中,找一个f值最大的来更新最优解。这和求上升子序列是思想是一样的。另外,在枚举b[j]的时候,我们顺便保存一下小于a[i]的f值最大的b[j],这样在更新的时候,我们就可以做到O(1)的复杂度,从而将整个算法的复杂度保证在O(nm)

View Code
#include<iostream>
#include<string>
using namespace std;int max(int a,int b)
{return a>b?a:b;
}int a[1010],b[1010];
int f[1010],n,m;int LCIS()
{int i,j,k;memset(f,0,sizeof(f));for(i=0;i<n;i++){k=0;for(j=0;j<m;j++){if(a[i]==b[j]) //如果a[i]==b[j]
            {if(f[j]<f[k]+1) //就在0到j-1之间,找一个b[k]小于a[i]的f[k]值最大的解f[j]=f[k]+1;}if(a[i]>b[j]) //0到j-1中,对于小于a[i]的,保存f值的最优解
            {if(f[k]<f[j])k=j;}}}int ans=0;for(i=0;i<m;i++)ans=max(ans,f[i]);return ans;
}int main()
{int t,i,j;freopen("D:\\in.txt","r",stdin);scanf("%d",&t);while(t--){scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}scanf("%d",&m);for(j=0;j<m;j++){scanf("%d",&b[j]);}printf("%d\n",LCIS());if(t)printf("\n");}return 0;
}

具体练习可以做做HDU 1423和湖南省第八届程序设计大赛的J题

转载于:https://www.cnblogs.com/ka200812/archive/2012/10/15/2723870.html

相关文章:

【组队学习】【26期】动手学数据分析

动手学数据分析 论坛版块&#xff1a; http://datawhale.club/c/team-learning/25-category/25 开源内容&#xff1a; https://github.com/datawhalechina/hands-on-data-analysis 学习目标 了解数据分析中基本库的操作&#xff08;比如&#xff1a;pandas,numpy和matplo…

利用FFmpeg切割视频

关键词:FFmpeg&#xff0c;seek&#xff0c;ss&#xff0c;t&#xff0c;to&#xff0c;搜索&#xff0c;定位介绍如果你想要从输入文件中切割一部分&#xff0c;需要用到ss选项。快速定位需要将ss放在输入文件的前面&#xff08;即-i的前面&#xff09;ffmpeg-ss 00:03:00 -i …

哪些人适合参加软件测试培训?

想要进入互联网行业也不是一句两句那么简单的&#xff0c;近几年&#xff0c;很多人都想要学习软件测试技术&#xff0c;通过做软件测试岗位进入到互联网行业&#xff0c;那么所有人都可以学习这个技术吗?我们下面就来详细的了解一下哪些人适合参加软件测试培训? 哪些人适合参…

Linux的su命令,sudo命令和限制root远程登录

3.7 su命令&#xff1a; su命令是用来切换用户的&#xff0c;例如我要从root用户切换到user2用户&#xff1a; 这个 - 选项是彻底切换用户的意思&#xff0c;如果不加 - 选项也可以&#xff0c;但是切换得不彻底&#xff0c;例如当前的家目录还是root&#xff0c;环境变量也还是…

MongoDB 标准连接字符串

MongoDB 标准连接字符串mongodb://[username:password]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]注&#xff1a;并非所有MongoDB驱动都支持完整的连接字符串&#xff0c;不支持此格式连接字串的驱动会有替代连接方案&#xff0c;具体请参照驱…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 3. 对数几率回归

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 以往内容&#xff1a; 西瓜书公式推导讲解来了&#xff01;0. 导学1. 一…

零基础ui设计培训一定要知道字体设计规则

作为一名UI设计师&#xff0c;最最重要的就是字体设计这方面&#xff0c;很多UI设计工作中&#xff0c;字体是必不可缺的&#xff0c;下面小编就为大家详细的介绍一下零基础ui设计培训一定要知道字体设计规则。 零基础ui设计培训一定要知道字体设计规则&#xff1a; 在计算机普…

centos 脚本基础练习1

1&#xff0c;写一个脚本&#xff1a;判断当前系统上是否有用户的默认shell 为bash&#xff1b;如果有&#xff0c;就显示有多少个这类用户&#xff1b;否则就显示没有这类用户&#xff1b;[rootlocalhost mscripts]# cat lx1.sh #!/bin/bashgrep "bash$" /etc/passw…

【组队学习】【26期】图神经网络

图神经网络 论坛版块&#xff1a; http://datawhale.club/c/team-learning/27-category/26 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-nlp/tree/master/GNN 学习目标 我们的组队学习将带领大家入门图神经网络&#xff0c;为大家今后在学习和…

as3回调方法模拟事件监听

//Client.as package callback{import flash.display.Sprite;public class Client extends Sprite{public function Client() {//调用Seriver类的callFun方法,并把clientFun方法传给callFun方法var server : Server new Server();server.callFun(clientFun);}//定义一个回调方…

java培训教程:什么是匿名内部类?怎样创建匿名内部类?

本期java教程要为大家分享的是关于java中的匿名内部类&#xff0c;相信很多同学在学java技术的时候有了解过&#xff0c;下面我们就来详细的看一下。 java培训教程&#xff1a;什么是匿名内部类?怎样创建匿名内部类?匿名内部类是没有名称的内部类。在Java中调用某个方法时&am…

lvs后端realserver的vip管理脚本lvs-realsvr.sh

lvs后端realserver的vip管理脚本lvs-realsvr.sh 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#!/bin/bash# # 2015/3/27# lvs real server## chkconfig: - 85 15# description: contro…

【组队学习】【26期】Linux教程

Linux教程 论坛版块&#xff1a; http://datawhale.club/c/team-learning/27-category/27 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/Linux 学习目标 Linux组队学习形式主要为理论代码实践的方式&#xff0c;学习结束后…

java培训机构如何选择适合自己的

java培训机构如今在市面上是越来越多了&#xff0c;主要还是大多数人想要进入到互联网行业&#xff0c;都会先选择学习java技术&#xff0c;那么下面我们就来详细的了解一下java培训机构如何选择适合自己的吧。 java培训机构如何选择适合自己的?结合以往学长学姐们的反馈及总结…

黑马程序员5 多线程

------- android培训、java培训、期待与您交流&#xff01; ---------- 创建线程的第一种方式&#xff1a;继承Thread类。步骤&#xff1a;1&#xff0c;定义类继承Thread。2&#xff0c;复写Thread类中的run方法。 目的&#xff1a;将自定义代码存储在run方法。让线程运行。 3…

解决 mac ox 终端显示bogon 的问题

方法一. 将DNS设置为Google的DNS服务器地址 8.8.8.8 方法二. 在终端进行设置 sudo hostname yourname 转载于:https://www.cnblogs.com/yshuai/p/7911869.html

【组队学习】【26期】编程实践(Django网站开发)

编程实践&#xff08;Django网站开发&#xff09; 论坛版块&#xff1a; http://datawhale.club/c/team-learning/28-category/28 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/Django 学习目标 从零开始搭建一个属于自己…

asp.net 防注入

http://www.cnblogs.com/zxlin25/archive/2009/03/09/1407237.html转载于:https://www.cnblogs.com/alwayscainiao/archive/2012/10/23/2735011.html

ui设计师要懂哪些B端设计原则?

UI设计师是一个非常广泛的职位&#xff0c;它所接触的工作内容是非常多的&#xff0c;其中B端的设计内容就是一种&#xff0c;产品设计对于不同行业、不同公司、不同决策者都会有很大的差异&#xff0c;没有最好的设计原则&#xff0c;只有最适合你产品的原则。今天小编就为大家…

StartOS 5.0 正式版发布

StartOS 5.0正式版发布了。 StartOS —— 是由东莞瓦力网络科技有限公司发行的开源操作系统&#xff0c;符合国人的使用习惯&#xff0c;预装常用的精品软件&#xff0c;操作系统具有运行速度快&#xff0c;安全稳定&#xff0c;界面美观&#xff0c;操作简洁明快 等特点。Star…

【组队学习】【26期】编程实践(Python办公自动化)

编程实践&#xff08;Python办公自动化&#xff09; 论坛版块&#xff1a; http://datawhale.club/c/team-learning/29-category/29 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/OfficeAutomation 学习目标 了解通过pyth…

软件测试培训分享:性能测试的目的是什么

在软件测试培训中&#xff0c;讲师们会讲到关于性能测试这方面&#xff0c;很多人都不理解&#xff0c;性能测试的目的是什么?性能测试的目的是为了测试产品是否满足在需求说明书中规定的性能&#xff0c;是否达到用户的性能要求&#xff0c;发现产品存在的性能瓶颈&#xff0…

[Android Pro] 有关Broadcast作为内部类时注册的一些问题

很经常Broadcast都会写成一个Activity或者Service的内部类。这时候的注册和普通有点小区别。 有两种情况1、假如是再Manifest文件里面静态注册的话&#xff0c;需要注意。ex&#xff1a;<applicationandroid:icon"drawable/ic_launcher"android:label"string…

NCEPU:线下组队学习周报(008)

线下组队学习 经过一段时间的准备&#xff0c;我们组织的线下组队学习逐步进入正轨。欢迎华北电力大学保定校区的伙伴加入进来大家一起学习一起成长。 我们开展组队学习的内容为&#xff1a; &#xff08;1&#xff09;周志华的《机器学习》&#xff08;西瓜书&#xff09; …

shell脚本初级教学(从基本脚本开始学起)

shell脚本的意义就在于实现以后的自动化运维,Linux其实也是基于shell脚本的所以我今天给大家教两个简单的脚本,并且解释.第一个抽奖脚本:思路:首先创建一个vim文件[rootserver0 ~]# vim /root/choujiangjiaoben.sh // (sh结尾是给自己一个是shell脚本的注释) #!/bin/bash // (以…

UI设计培训分享:app图标设计要遵循哪些原则

APP图片设计是UI设计工作中经常会遇到的&#xff0c;一个好的APP产品&#xff0c;图标的设计是非常重要的&#xff0c;本期小编为大家分享的UI设计培训教程就是app图标设计要遵循哪些原则?来看看下面的详细介绍。 UI设计培训分享&#xff1a;app图标设计要遵循哪些原则? 一、…

如何使用netwokx进行复杂网络的中心性分析?

如何使用netwokx进行复杂网络的中心性分析&#xff1f; 这是本学期在大数据哲学与社会科学实验室做的第七次分享了。 第一次分享的是&#xff1a; 如何利用“wordcloudjieba”制作中文词云&#xff1f; 第二次分享的是&#xff1a; 如何爬取知乎中问题的回答以及评论的数据…

Redis 笔记系列(十一)——Redis的发布和订阅机制

2019独角兽企业重金招聘Python工程师标准>>> 本文说的redis功能没啥大用处&#xff0c;大家知道有这回事情就好&#xff0c;我一笔带过。 Redis的发布订阅 这是什么 进程间的一种消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 例如…

界面交互推荐-25个闪亮创意的404错误页面设计-你从中发现了什么

404错误页面是站长和用户都很不愿见到的页面&#xff0c;因为那意味着该网站不能访问。但404错误是没人能避免&#xff0c;如服务器出现问题&#xff0c;站内需要调整&#xff0c;收到攻击等,我们访问网站的时候&#xff0c;一旦遇到404提示&#xff0c;我们那时的感觉是相当差…

参加完Python培训可以做什么

大家都知道Python在互联网行业是很吃香的&#xff0c;但是参加完Python培训之后&#xff0c;很多人都不知道该从哪个职业方向做起&#xff0c;下面小编就为大家详细的介绍一下参加完Python培训可以做什么? 参加完Python培训可以做什么?目前来看&#xff0c;Python发展得还是不…