https://www.luogu.org/problem/show?pid=1439

这个一看就是n*n的暴力嘛,但是n有点大…
因为是两个排列,换句话说没有重复的数字;
那我们可以转化一下

比如样例

5
3 2 1 4 5
1 2 3 4 5

我们把下面一行的值变成上面一行的位置

3 2 1 4 5

那么直接最长上升子序列就好了
为什么呢?
比如第二行第一个数1
如果我们选了1,那么后面是不是只可以选择在第一行1后面的数了;
就是这个道理;

然后对于最长上升子序列我们有一个基于单调栈和二分的算法n*logn
就是维护一个递增的栈;
当前我们的值是x;
如果x>栈顶,那么直接加入;
不然我们就二分找到第一个大于x的数,直接替换;
因为x之后的数,全可以接在x的后面,所以直接替换就可以了;
最后答案就是栈的高度;
但是方案并不是栈的元素;
不好意思,这种方法不可以记录方案的;

#include<bits/stdc++.h>
#define Ll long long
using namespace std;
const int N=1e5+5;
int f[N],a[N],v[N],top;
int n,m,x,ans;
int er(int x){if(x>v[top])return ++top;int l=1,r=top,ans,mid;while(r>=l){mid=l+r>>1;if(v[mid]>x)ans=mid,r=mid-1;else l=mid+1;}return ans;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&x),f[x]=i;for(int i=1;i<=n;i++){scanf("%d",&x);v[er(f[x])]=f[x];}printf("%d",top);
}

xjb——洛谷 P1439 排列LCS问题相关推荐

  1. [洛谷P1439]排列LCS问题

    题目大意:给你两个1~n的排列,求他们的LCS. 解题思路:由于是1~n的排列,每个数会且只会出现1次.我们可以把一个序列映射成1,2,3,4--然后将另一个序列按照这个映射进行改变.由于前一个序列已 ...

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

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

  3. xjb——洛谷P1191 矩形

    https://www.luogu.org/problem/show?pid=1191 来一个用xjb算法的题解: xjb是什么算法? 这种算法基本上可以解决所有题目: 也许你不会lct: 也许你不会 ...

  4. 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对

    [题目链接] ybt 1311:[例2.5]求逆序对 ybt 1237:求排列的逆序数 OpenJudge NOI 2.4 7622:求排列的逆序数 洛谷 P1908 逆序对 ybt 1311,123 ...

  5. 二叉树——求先序排列(洛谷 P1030)

    题目选自洛谷P1030 首先,一点基本常识,给你一个后序遍历,那么最后一个就是根(如ABCD,则根为D). 因为题目求先序,意味着要不断找根. 那么我们来看这道题方法:(示例) 中序ACGDBHZKX ...

  6. 洛谷P1852 奇怪的字符串

    题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00 ...

  7. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  8. 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】

    题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...

  9. 洛谷P4016 负载平衡问题

    洛谷P4016 负载平衡问题 题目大意: G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只 能在相邻的仓库之间 ...

最新文章

  1. Prefix Sum Primes
  2. Python 20 秒画完小猪佩奇“社会人”!
  3. 决策树 prepruning_智能建筑运维前探 AI天天见之五:决策树算法应用探索
  4. python创建空元组_Python——元组的基本语法(创建、访问、修改、删除)
  5. 几个交换问题的咨询?
  6. Spring Data Jpa 报错org.hibernate.LazyInitializationException: could not initialize proxy
  7. spring集成testng
  8. oracle 扩容undo,某银行积分系统数据库RAC环境扩充undo表空间
  9. Android进阶:Binder那么弱怎么面大厂?
  10. 可行性研究与效益分析
  11. 下docfetcher先下Java,docfetcher怎么用-docfetcher的使用教程 - 河东软件园
  12. Qt --- 基础知识
  13. 近视矫正手术:准分子激光,飞秒,全飞秒
  14. 大多数计算机专业研究生的三年是怎么过的?
  15. error: You have not concluded your merge (MERGE_HEAD exists).解决
  16. 位操作技巧:Bit Twiddling Hacks
  17. 人工神经网络英文简称,人工神经网络 英文
  18. 教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段
  19. java 获得唯一 数字_java生成唯一数字
  20. 【代码实现】数学游戏:最后一个说30就输的数学游戏

热门文章

  1. 全国大学生数学建模竞赛——大赛介绍与赛后总结
  2. 苹果赢嘛了,首次登顶中国手机市场年度一哥,国产手机无力抗衡
  3. java密码转换_摩斯密码转换-JAVA版
  4. IT 春联,不许笑!
  5. 曾为你冷风中颤抖 曾为你泪水狂流
  6. 90后白手创业,身家过亿
  7. 中新传媒大厦改造项目中电能管理系统的应用
  8. 一分钟学一个 Linux 命令 - ls
  9. 华为晟思Mindspore初体验:全场景统一式框架与函数式微分编程
  10. Microsoft Office全家桶激活踩坑