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. 洗礼灵魂,修炼python(91)-- 知识拾遗篇 —— pymysql模块之python操作mysql增删改查

    首先你得学会基本的mysql操作语句:mysql学习 其次,python要想操作mysql,靠python的内置模块是不行的,而如果通过os模块调用cmd命令虽然原理上是可以的,但是还是不太方便,那么 ...

  2. CVE-2012-0158 分析

    目录 CVE-2012-0158 分析&利用 1.实验环境 2.下载poc样本 3.调试并找到漏洞触发点 4.分析漏洞触发模块及流程 5.漏洞利用 6.总结 7.参考资料 CVE-2012-0 ...

  3. Java入门(三):变量和运算符

    上次谈到了Java的基本数据类型,今天接着聊Java的变量.运算符. 一.变量 1.变量的分类 变量分为成员变量.局部变量和常量,其中成员变量又分为实例变量.类变量. 2.变量的定义 语法:变量类型( ...

  4. Word中的通配符随意组合进行批量替换或删除某些内容

    长文档需要批量修改或删除某些内容的时候,我们可以利用Word中的通配符来搞定这一切,当然,前提是你必须会使用它.通配符的功能非常强大,能够随意组合替换或删除我们定义的规则内容,下面易老师就分享一些关于 ...

  5. hystrix

    <servlet> <display-name>HystrixMetricsStreamServlet</display-name> <servlet-nam ...

  6. 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别

    数据库事务的四大特性以及事务的隔离级别   本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...

  7. UVA11882-Biggest Number(DFS+最优化剪枝)

    Problem UVA11882-Biggest Number Accept: 177    Submit: 3117Time Limit: 1000 mSec    Memory Limit : 1 ...

  8. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  9. springboot 服务工程,前端服务调用接口报跨域错误

    前后端分离,VUE.JS调用服务接口时,跨域错误.需要服务接口工程设置,如下: @SpringBootApplicationpublic class SpringCloudOpenapiApplica ...

  10. 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端

    使用场景:有适配pc端改为适配pc端和移动端,使用2套css 代码实现App.vue created: function () { if(document.documentElement.client ...