LCIS

 Accepts: 109
 Submissions: 775
 Time Limit: 4000/2000 MS (Java/Others)
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
Alex有两个序列a1a2...ana​1​​,a​2​​,...,a​n​​和b1b2...bmb​1​​,b​2​​,...,b​m​​. 他想找到它们的最长公共递增子序列, 并且这个子序列的值是连续的(xx1...y1yx,x+1,...,y−1,y).
输入描述
输入包含多组数据, 第一行包含一个整数TT表示测试数据组数. 对于每组数据:

第一行包含两个整数nn和mm 1nm100000(1≤n,m≤100000)表示两个序列的长度. 第二行包含nn个整数: a1a2...ana​1​​,a​2​​,...,a​n​​ 1ai106(1≤a​i​​≤10​6​​). 第三行包含mm个整数: b1b2...bmb​1​​,b​2​​,...,b​m​​ 1bi106(1≤b​i​​≤10​6​​).

输入最多有10001000组数据, 并且所有数据中nn与mm的和不超过21062×10​6​​.
输出描述
对于每组数据, 输出一个整数表示长度.
输入样例
3
3 3
1 2 3
3 2 1
10 5
1 23 2 32 4 3 4 5 6 1
1 2 3 4 5
1 1
2
1
输出样例
1
5
0

本题多了一个要求,上升必须是依次递增
一开始还想用f[i]表示以a[i]结尾,然而并不方便(应该能做,开一个mx[i]表示值大小为i的f值最大的编号)
直接f[i]表示a以i结尾的"LIS",g[i]表示b的
处理g时顺便更新答案行了 ps:代码里有一些奇怪的卡常请无视
//
// main.cpp
// bc87-1003
//
// Created by Candy on 10/1/16.
// Copyright © 2016 Candy. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
using namespace std;
const int N=1e5+,V=1e6+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x;
}
int T,n,m,a[N],b[N],f[V],g[V];
int main(int argc, const char * argv[]){
T=read();
while(T--){
n=read();m=read();
int ans=,la=,lb=;
for(int i=;i<=n;i++) a[i]=read();//la=max(la,a[i]=read());
for(int i=;i<=m;i++) b[i]=read();//lb=max(lb,b[i]=read());
for(int i=;i<=n;i++)
f[a[i]]=max(f[a[i]],f[a[i]-]+);
for(int i=;i<=m;i++){
g[b[i]]=max(g[b[i]],g[b[i]-]+);
ans=max(ans,min(f[b[i]],g[b[i]]));
}
printf("%d\n",ans);//la++;lb++;
//memset(f,0,la*sizeof(int));
//memset(g,0,lb*sizeof(int));
for(int i=;i<=n;i++) f[a[i]]=;
for(int i=;i<=m;i++) g[b[i]]=;
}
return ;
}

 

BestCoder Round #87 1003 LCIS[序列DP]的更多相关文章

  1. BestCoder Round #87 1002 Square Distance[DP 打印方案]

    Square Distance  Accepts: 73  Submissions: 598  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit ...

  2. HDU 5904 - LCIS (BestCoder Round #87)

    HDU 5904 - LCIS [ DP ]    BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式 ...

  3. 从lca到树链剖分 bestcoder round#45 1003

    bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或) ...

  4. BestCoder Round #87 LCIS(dp)

    LCIS 要用dp的思路想这题 [题目链接]LCIS [题目类型]dp &题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的,比如(x,x+1,...,y−1 ...

  5. HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )

    题意: 给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s, 要求字典序最小的答案    分析: 把字符串折半,分成0 - n/2-1 和 n/2 - n-1 d ...

  6. HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树

    zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...

  7. Codeforces Beta Round #10 D. LCIS(DP&amp;LCIS)

    D. LCIS time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  8. BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]

    传送门 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  9. BestCoder Round #75 1003 - King's Order

    国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...

随机推荐

  1. 小谈React、React Native、React Web

    React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...

  2. 关于EJB的理解

    这一段时间一直在北京面试,很多都有关EJB的相关问题,于是上网查了各种资料.所以,EJB到底是什么? 简而言之:EJB就是将已编写的软件中的业务类.不放到客户端软件中,而将其打包放入服务器中.以C/S ...

  3. 深入理解javascript---命名函数表达式

    简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的.当然,如果你不关注调试,那就没什么可 ...

  4. CSS基础知识之文本属性二三事

    line-height 可以给某个元素指定一个不带单位的缩放因子,这样它的后代元素就会继承这个缩放因子,再根据自身的字号大小来计算自己的行高(line-height)值, body { font-si ...

  5. linux命令学习使用记录

    1.文件批量重命名:把所有.xml文件重命名.txt,第一个参数为文件名中字符串,第二个参数为替换后文件名,第三个为当前目录文件列表 rename .xml .txt *.xml 2.解压不显示过程: ...

  6. Nmap源码分析(脚本引擎)

    Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...

  7. Android Animation学习(一) Property Animation原理介绍和API简介

    Android Animation学习(一) Property Animation介绍 Android Animation Android framework提供了两种动画系统: property a ...

  8. IOS开发中常用一下方法

    1.获得屏幕的宽高 [UIScreen mainScreen].bounds.size.width [UIScreen mainScreen].bounds.size.height 2.Iphone版 ...

  9. 多线程(pthread、NSThread、GCD)

    pthread C语言编写 跨平台可移植 线程生命周期需要我们来管理 使用困难 NSThread 面向对象的 可直接操作线程对象 线程生命周期需要我们来管理 使用简单 资源互斥(@synchroniz ...

  10. Objective—C基础学习总结

        1. (1)面向过程:一种以事件为中心的编程思想         (2)面向对象:一种以对象为中心的编程思想        2.get和set是用来访问和修改对象里的属性值           ...