P1439 【模板】最长公共子序列
题目描述
给出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<iostream>
#include<cstdio>
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);
}
P1439 【模板】最长公共子序列的更多相关文章
- 【Luogu P1439】最长公共子序列(LCS)
Luogu P1439 令f[i][j]表示a的前i个元素与b的前j个元素的最长公共子序列 可以得到状态转移方程: if (a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1; d ...
- 洛谷 P1439 【模板】最长公共子序列
\[传送门啦\] 题目描述 给出\(1-n\)的两个排列\(P1\)和\(P2\),求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数\(n\), 接下来两行,每行为\(n\)个数,为 ...
- P1439 【模板】最长公共子序列 LCS
P1439 [模板]最长公共子序列 题解 1.RE的暴力DP O(n2) 我们设dp[i][j]表示,S串的第i个前缀和T串的第j个前缀的最长公共子序列. ◦ 分情况: ◦ ...
- 洛谷P1439 【模板】最长公共子序列
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...
- 洛谷 P1439 【模板】最长公共子序列 题解
每日一题 day40 打卡 Analysis 因为两个序列都是1~n 的全排列,那么两个序列元素互异且相同,也就是说只是位置不同罢了,那么我们通过一个book数组将A序列的数字在B序列中的位置表示出来 ...
- P1439 【模板】最长公共子序列(LCS)
先来看一看普通的最长公共子序列 给定字符串A和B,求他们的最长公共子序列 DP做法: 设f[i][j]表示A[1~i]和B[1~j]的最长公共子序列的长度 那么f[i][j]=max(f[i-1][j ...
- P1439 【模板】最长公共子序列(DP)
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...
- 洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...
- 最长公共子序列问题(LCS) 洛谷 P1439
题目:P1439 [模板]最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 关于LCS问题,可以通过离散化转换为LIS问题,于是就可以使用STL二分的方法O(nlogn ...
随机推荐
- [javaSE] 并发编程(线程间通信)
新建一个资源类Resource 定义成员变量String name 定义成员变量int age 新建一个输入类Input,实现Runnable接口 定义一个构造方法Input(),传入参数:Resou ...
- MyEclipse设置选中单词其它同名单词前景色和背景色
General->Editors->Annotations->Occurrences
- JAVA 项目 调用外部的WebSerivce接口,入门实例 (一)
前言: 第一次接触WebService,工作需要,调用外部的WebService接口,所以暂时我这里不考虑发布,做个记录,待以后回来可以看看,只是最初级的,所以有何不好.不对的地方,欢迎看到的同僚给予 ...
- 前端模块化(AMD和CMD、CommonJs)
知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs. 知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏览器 ...
- Golang 使用FreeType-go进行字体
FreeType库(http://www.freetype.org/)是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, O ...
- Hive,HANA可视化客户端工具
目前市面上的Hive可视化客户端工具,大都是C/S模式的,安装使用都不是太方便,目前有一款基于WEB的可视化工具TreeSoft,通过浏览器就可以访问使用了,并且可以同时管理.维护.监控MySQL,O ...
- 微软官方公布的Windows 8.1 Update常用快捷键
以前用 Windows Server 2008R2,初装Win8.1,感觉最明显的是开关机速度真心快~下面摘录了常用的几个快捷键: Windows 键+D:显示或隐藏桌面 Windows键+X:访问Q ...
- 最好最实用的二次开发教程 cms
◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断 ...
- How to work with the snap environment
How to work with the snap environment SummaryThe snap environment manages snap agents and snap toler ...
- redis介绍(4)实战场景
redis我主要在两方面说明: 集群下的session的管理 Tomcat 与 DB之间缓存