博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1439 【模板】最长公共子序列
阅读量:5312 次
发布时间:2019-06-14

本文共 813 字,大约阅读时间需要 2 分钟。

题目描述

给出1-n的两个排列P1和P2,求它们的最长公共子序列。

输入输出格式

输入格式:

第一行是一个数n,

接下来两行,每行为n个数,为自然数1-n的一个排列。

输出格式:

一个数,即最长公共子序列的长度

输入输出样例

输入样例#1: 复制

5

3 2 1 4 5
1 2 3 4 5

输出样例#1: 复制

3

说明

【数据规模】

对于50%的数据,n≤1000

对于100%的数据,n≤100000


把第一个串和第二个串的位置进行匹配,然后就转化乘找最长上升子序列


#include
#include
using namespace std;int i,m,n,j,k,a[1000001],b[1000001],c[1000001],ans;void add(int x,int z){ for(int i=x;i<=n;i+=i & -i) c[i]=max(c[i],z);}int find(int x){ int ans=0; for(int i=x;i>0;i-=i&-i) ans=max(ans,c[i]); return ans;}int main(){ scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&k), a[k]=i; for(i=1;i<=n;i++) scanf("%d",&k), b[i]=a[k]; for(i=1;i<=n;i++) { k=find(b[i])+1; ans=max(ans, k); add(b[i],k); } printf("%d",ans);}

转载于:https://www.cnblogs.com/ZUTTER/p/9885221.html

你可能感兴趣的文章
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>