P1439 排列LCS问题
2024-08-30 06:55:55
P1439 排列LCS问题
题目描述
给出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
题解:
看到10W的规模,大致可以断定此题应该用O(nlogn)的解法,朴素的LCS算法时间复杂度为O(n^2),明显不可行。
首先简化一下问题,假设P1恰好为单调递增的1,2,3,...n,那么很显然答案就是P2的最长上升子序列的长度(想一想,为什么?)
问题是P1并非单调递增的,但我们可以假定它就是1,2,3,...,n,将P1[1]映射到1,P1[2]映射到2,……然后再将P2作相同的变换即可,这样只要求P2的最长上升子序列了。
最长上升子序列是有O(nlogn)算法的,大致过程如下:
建立栈a,每读入一个元素x,若x比栈顶元素大则x进栈,否则在栈中二分找到第一个大于x的元素a[k],并用x替换它,做完以后栈的大小就是序列的最长上升子序列的长度。
AC代码:
(头文件自动忽略就好)
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<string>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define ll long long
#define N 100010
#define inf 1100000000
#define linf 999999999999999LL
#define xx first
#define yy second
typedef pair<int,int> diy;
inline const int read(){
register int x=,f=;
register char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,len;
int a[N],b[N];
int main(){
n=read();
for(int i=;i<=n;i++) a[read()]=i;
for(int i=;i<=n;i++) b[i]=a[read()];
memset(a,,sizeof a);
a[len=]=b[];
for(int i=;i<=n;i++){
if(b[i]>a[len])
a[++len]=b[i];
else
a[lower_bound(a+,a+len+,b[i])-a]=b[i];
}
printf("%d\n",len);
return ;
}
最新文章
- MyTtcp 测试网络带宽
- bootstrap-table 原来bootstrap还有这么强大的表格插件
- SVN常见问题处理
- java--关键字和保留字
- 【C#】添加鼠标管轮事件
- C++经典书目索引及资源下载
- (读书笔记)第2章 TCP-IP的工作方式
- CSS3 文字与字体相关样式
- 使用command line测试网速
- hduoj 1002 A + B Problem II
- Sqoop异常:Exception in thread ";main"; java.lang.NoClassDefFoundError: org/json/JSONObject
- 配置opensips经验总结
- Python基础知识摘要
- Haskell语言学习笔记(53)Data.Sequence
- js中对话框的使用
- Android 实现 HttpClient 请求Https
- [ES6]import 与export的用法 ,export 与export default 的 区别 以及用法
- XAMPP apache443端口被占用
- DS05--查找
- 《Debian标准教程》摘录2则
热门文章
- python中unicode, hex, bin之间的转换
- Objective-C-------(1)创建并使用对象
- centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins
- Codeforces Round #211 (Div. 2)-D. Renting Bikes,二分!感谢队友出思路!
- NYOJ301-递推求值
- POJ-2421Constructing Roads,又是最小生成树,和第八届河南省赛的引水工程惊人的相似,并查集与最小生成树的灵活与能用,水过~~~
- bzoj3572[Hnoi2014] 世界树 虚树+dp+倍增
- SDWebImage实现分析
- Eclipse安装插件长时间停留在calculating requirements and dependencies
- android修改系统时系统黑屏时不进入休眠状态