lis:最长递增子序列

复杂度:$O(nlgn)$

 #include<iostream>
#include<cstdio>
using namespace std;
int num[],lis[],res=;
int solve(int x)
{
int a=,b=res;
while(a!=b)
{
int mid=(a+b)/;
if(lis[mid]>=x)
b=mid;
else
a=mid+;
}
return a;
}
int main()
{
int n;
cin>>n;
for(int i=;i<=n;i++)
scanf("%d",&num[i]);
for(int i=;i<=n;i++)
{
if(lis[res]<=num[i])
res++,lis[res]=num[i];
else
lis[solve(num[i])]=num[i];
}
cout<<res<<endl;
return ;
}

lcs:最长公共子序列

复杂度$n\times m$

 #include <cstdio>
#include <iostream>
using namespace std;
int dp[][];
int main()
{
string a,b;
while(cin>>a>>b)
{
for(int i=;i<=a.size();i++)
for(int j=;j<=b.size();j++)
{
if(a[i-]==b[j-])dp[i][j]=dp[i-][j-]+;
else dp[i][j]=max(dp[i-][j],dp[i][j-]);
} char path[];
for(int aa=a.size(),bb=b.size(),num=;aa>=&&bb>=;)
{
if(a[aa-]==b[bb-])
{
path[num++]=a[aa-];
aa--,bb--;
}
else
{
if(dp[aa-][bb]>dp[aa][bb-])
aa--;
else bb--;
}
}
cout<<dp[a.size()][b.size()]<<endl;
for(int i=dp[a.size()][b.size()];i>=;i--)
cout<<path[i]<<" ";
cout<<endl;
}
return ;
}

lics: 最长公共上升子序列

复杂度$n\times m$

 #include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=;
int n,m,num1[maxn],num2[maxn],f[maxn];
int lics()
{
for(int i=;i<=m;i++)f[i]=;
int res=;
for(int i=;i<=n;i++)
{
int k=;
for(int j=;j<=m;j++)
{
if(num1[i]==num2[j])
f[j]=max(f[j],k+); if(num2[j]<num1[i])
{
k=max(f[j],k);
}
res=max(res,f[j]);
}
}
return res;
}
int main()
{
int T;
cin>>T;
for(int i=;i<=T;i++)
{
cin>>n;
for(int j=;j<=n;j++)
scanf("%d",&num1[j]);
cin>>m;
for(int j=;j<=m;j++)
scanf("%d",&num2[j]);
cout<<lics()<<endl;
if(i!=T)
puts("");
}
return ;
}

最长递增子序列(lis)最长公共子序列(lcs) 最长公共上升子序列(lics)的更多相关文章

  1. UVa 10534 Wavio Sequence (最长递增子序列 DP 二分)

    Wavio Sequence  Wavio is a sequence of integers. It has some interesting properties. ·  Wavio is of ...

  2. 51nod 1218 最长递增子序列 V2(dp + 思维)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 题解:先要确定这些点是不是属于最长递增序列然后再确定这 ...

  3. 最长公共子序列(LCS)和最长递增子序列(LIS)的求解

    一.最长公共子序列 经典的动态规划问题,大概的陈述如下: 给定两个序列a1,a2,a3,a4,a5,a6......和b1,b2,b3,b4,b5,b6.......,要求这样的序列使得c同时是这两个 ...

  4. 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度:2. 与之类似但不同的 ...

  5. 最长连续公共子序列(LCS)与最长递增公共子序列(LIS)

    最长公共子序列(不连续) 实际问题中也有比较多的应用,比如,论文查重这种,就是很实际的一个使用方面. 这个应该是最常见的一种了,不再赘述,直接按照转移方程来进行: 按最普通的方式就是,直接构造二维矩阵 ...

  6. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  7. 2.16 最长递增子序列 LIS

    [本文链接] http://www.cnblogs.com/hellogiser/p/dp-of-LIS.html [分析] 思路一:设序列为A,对序列进行排序后得到B,那么A的最长递增子序列LIS就 ...

  8. LIS 最长递增子序列

    一.最长公共子序列 经典的动态规划问题,大概的陈述如下: 给定两个序列a1,a2,a3,a4,a5,a6......和b1,b2,b3,b4,b5,b6.......,要求这样的序列使得c同时是这两个 ...

  9. hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明

    题目:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11313 湖师大的比赛,见我的另一篇水题题解,这里要说的 ...

随机推荐

  1. shell编程-输入/输出重定向(十一)

    linux中文件描述符 linux跟踪打开文件,而分配的一个数字,通过这个数字可以实现对文件的读写操作 用户可以自定义文件描述符范围是:3-max,max跟用户的ulimit –n 定义数字有关系,不 ...

  2. Linux 安装golang

    访问官方下载地址 或 https://studygolang.com/dl ,32位系统下载go1.9.4.linux-386.tar.gz,64位系统下载go1.9.4.linux-amd64.ta ...

  3. Windows Server 2016-管理站点复制(二)

    为了保持所有域控制器上的目录数据一致和最新,Active Directory 会定期复制目录更改.复制根据标准网络协议进行,并使用更改跟踪信息防止发生不必要的复制,以及使用链接值复制以提高效率. 本章 ...

  4. wordpress安装后访问博客只显示文字的解决办法

    按着网上的教程,买了腾讯云服务器,上面的镜像已经安装好WordPress了.但是发现并不像网上十分钟搭建个人站点等的写的那么简单.遇到了一些问题,下面来详细讲一讲. 首先是用ip地址不能直接访问服务器 ...

  5. PHP的move_uploaded_file()出错解决

    今天用的PHP的move_uploaded_file方法保存前端上传的中文名称文件时,方法返回假,调试时错误码为2,错误信息为: move_uploaded_file(D:\ git_prj \ xx ...

  6. Linux下编译安装Apache报APR not found错误的解决办法

    我在编译安装完Nginx.MySQL和PHP(见之前一篇博客:LNMP环境搭建详细教程)之后,进行apache的编译安装: cd /usr/local/src wget http:.tar.gz ta ...

  7. 如何用Jupyter notebook打开本地数据集

    首先打开本地Jupyter notebook,出现类似页面并进入网页端Home. 网页端界面类似如下: 需要注意的是,Jupyter notebook只能打开当前目录下的数据集,如csv,所以需要使用 ...

  8. D. Diverse Garland Codeforces Round #535 (Div. 3) 暴力枚举+贪心

    D. Diverse Garland time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. https基础

    面试题 https://blog.csdn.net/xihuangwutong/article/list/5? TLS 有三大功能:内容加密,身份认证,数据完整性认证 内容加密是依赖于秘钥协商协议数据 ...

  10. python实现命令行解析的argparse的使用

    参考https://docs.python.org/3.6/library/argparse.html argparse模块使编写用户友好的命令行界面变得很容易.程序定义了它需要什么参数,argpar ...