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. 从0开始学angularjs-笔记01

    一.angularjs简介 AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于,利 ...

  2. asp.net+nopi生成Excel遇到设置单元格值null问题

    Npoi 生成excel报表功能很不错,功能也不用给大家介绍了.首先看遇到的问题吧! FileStream file = new FileStream(Server.MapPath("Tem ...

  3. 2034-人见人爱A-B(c++实现)

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...

  4. (转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)

     JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)         函数节流,简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过 ...

  5. 创建和删除节点:——核心DOM

    1. 创建单个元素节点:3步:       1. 创建空元素节点对象:          var elem=document.createElement("标签名");      ...

  6. xmpp整理笔记:发送图片信息和声音信息

    图片和音频文件发送的基本思路就是: 先将图片转化成二进制文件,然后将二进制文件进行base64编码,编码后成字符串.在即将发送的message内添加一个子节点,节点的stringValue(节点的值) ...

  7. 希尔排序(Shell)

    希尔排序的实质就是分组插入排序,该方法又称缩小增量排序. 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序, ...

  8. XListView

    第一步:到官网下载第三方包,拷贝到自己的项目中 https://github.com/Maxwin-z/XListView-Android 第二步:xml文件 <me.maxwin.view.X ...

  9. iOS 内存问题

    malloc: *** error for object 0x15f8a3558: incorrect checksum for freed object - object was probably ...

  10. Android中各种Drawable总结

    在Android中,Drawable使用广泛,但是种类也多,基于<Android开发艺术探索>中对Drawable的讲解,总结了如下表格.