题目描述

给出 1,2,\ldots,n1,2,…,n 的两个排列 P_1P1 和 P_2P2 ,求它们的最长公共子序列。

输入格式

第一行是一个数 nn

接下来两行,每行为 nn 个数,为自然数 1,2,\ldots,n1,2,…,n 的一个排列。

输出格式

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

输入
5
3 2 1 4 5
1 2 3 4 5输出
3
/*
* 此题不能用直接的最长公共子序列来求解,会卡n方算法
*
* 注意到这个序列是一个全排列,即每一个数都是不同的,因此使用散列
* 将第一个序列中的数字映射为顺序的1-n,即对应的值为顺序递增的形式
* 这样两者的公共序列映射成的序列也将是按递增的顺序排列,这样就可以将
* 公共子序列问题转化为最长上升子序列问题
*/#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 100005;int n; //n个数
int a[maxn]; //第一个序列
int b[maxn];  //第二个序列
int map[maxn];  //映射int dp[maxn]; //dp[i]表示长度为i的上升子序列的末尾元素值int main()
{//输入数据cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];map[a[i]] = i;}for (int i = 1; i <= n; i++){cin >> b[i];}dp[1] = map[b[1]];int len = 1; //上升序列的最长长度for (int i = 2; i <= n; i++){int l = 1, r = len, mid;if (map[b[i]] > dp[len]){dp[++len] = map[b[i]];}else{while (l != r){mid = (l + r) / 2;if (dp[mid] > map[b[i]])r = mid;else{l = mid + 1;}}dp[l] = map[b[i]];}}cout << len;
}

P1439 【模板】最长公共子序列相关推荐

  1. P1439 【模板】最长公共子序列(LCS+LIS)

    文章目录 Part1:题目链接 Part2:题目 Part3:思路 关键1:关于这两个序列,它们是不同顺序的同数据序列. 关键2:序列2和序列1的LCS长度,就是在序列2严格遵守序列1的排序规则下所能 ...

  2. 动态规划——最长公共子序列(洛谷P1439)

    题目选自洛谷P1439 动态规划的模板题,最长公共子序列 1.譬如给定2个序列: 1 2 3 4 53 2 1 4 5 试求出最长的公共子序列. 那么 最普通的 LCS 代码: #include< ...

  3. 模板 - 最长上升子序列与最长公共子序列

    整理的算法模板合集: ACM模板 目录 1.最长上升子序列(LIS) 1.1树状数组优化O(nlogn)O(nlogn)O(nlogn) 2.最长公共子序列(LCS) 2.1转换成LIS优化O(nlo ...

  4. 最长公共子序列求序列模板提_最长公共子序列

    最长公共子序列求序列模板提 Description: 描述: This question has been featured in interview rounds of Amazon, MakeMy ...

  5. 最长公共子序列(模板 LCSL)

    博客:  https://www.cnblogs.com/sasuke-/p/5396843.html 模板 #include<iostream> #include<cstdio&g ...

  6. 最长公共子序列 LCS(模板) poj 1458

    一.标准模板 #include <iostream> #include <stdio.h> #include <cstring> #include <vect ...

  7. 最长公共子序列 (LCS) 详解+例题模板(全)

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...

  8. c语言最长公共子序列,算法设计与分析/动态规划——最长公共子序列LCS及模板...

    这位大佬写的对理解DP也很有帮助,我就直接摘抄过来了,代码部分来自我做过的题 一,问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符 ...

  9. 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子

    给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...

最新文章

  1. www服务器提供的第一个信息页面,第14章WWW服务
  2. Machine Learning | (10) 回归算法-岭回归
  3. Rhel6.0部署Oracle10g报错相关问题记录
  4. 我对CONTAINING_RECORD宏的详细解释
  5. combobox 怎么实现对listview的类别查询_通过 Django Pagination 实现简单分页
  6. 基础的VueJS面试题(附答案)
  7. 【数据库实验课堂】实验三:管理SQL Server表数据
  8. fread 和 read的区别
  9. c语言栈中符号 的作用是什么,C语言数据结构----栈的应用(程序的符号匹配检测)...
  10. Adobe Acrobat Reader离线安装包下载
  11. Hilbert变换器
  12. 如何写一份竞品分析报告——产品经理养成路
  13. Python#Typora-Python笔记
  14. 无所不在的计算技术——交互范型当中的新贵
  15. 1024@程序员:图灵社区福利来了,请本人签收
  16. Github Emoji——Github表情大全
  17. python将panadas写入excel_python pandas写入excel文件的方法示例
  18. 10分钟带你彻底搞懂服务限流和服务降级
  19. 类图中类与类之间的关系重点区分
  20. 项目实训2021.07.02

热门文章

  1. word无法保存html文件,【修复】Word“文件发生错误”,无法保存文件
  2. 深入探索Android 启动优化(七) - JetPack App Startup 使用及源码浅析
  3. C++小型公司的工资管理系统
  4. JAVA判断键盘录取的加减乘除_java从键盘输入3个数(其中一个数用来代表加减乘除的符号,其余两个数用来计算),用来进行加减乘除...
  5. 一个进入大厂的人对产品的感悟--转载
  6. 主机记录(A记录)是什么
  7. STM32程序下载4:通过STM32CubePro-USB下载
  8. 快手2020校园招聘秋招笔试--工程A试卷
  9. semantic-ui semantic.json配置
  10. 数据驱动的网络入侵检测:最新动向与研究趋势