xjb——洛谷 P1439 排列LCS问题
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问题相关推荐
- [洛谷P1439]排列LCS问题
题目大意:给你两个1~n的排列,求他们的LCS. 解题思路:由于是1~n的排列,每个数会且只会出现1次.我们可以把一个序列映射成1,2,3,4--然后将另一个序列按照这个映射进行改变.由于前一个序列已 ...
- 动态规划——最长公共子序列(洛谷P1439)
题目选自洛谷P1439 动态规划的模板题,最长公共子序列 1.譬如给定2个序列: 1 2 3 4 53 2 1 4 5 试求出最长的公共子序列. 那么 最普通的 LCS 代码: #include< ...
- xjb——洛谷P1191 矩形
https://www.luogu.org/problem/show?pid=1191 来一个用xjb算法的题解: xjb是什么算法? 这种算法基本上可以解决所有题目: 也许你不会lct: 也许你不会 ...
- 信息学奥赛一本通 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 ...
- 二叉树——求先序排列(洛谷 P1030)
题目选自洛谷P1030 首先,一点基本常识,给你一个后序遍历,那么最后一个就是根(如ABCD,则根为D). 因为题目求先序,意味着要不断找根. 那么我们来看这道题方法:(示例) 中序ACGDBHZKX ...
- 洛谷P1852 奇怪的字符串
题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00 ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】
题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...
- 洛谷P4016 负载平衡问题
洛谷P4016 负载平衡问题 题目大意: G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只 能在相邻的仓库之间 ...
最新文章
- Prefix Sum Primes
- Python 20 秒画完小猪佩奇“社会人”!
- 决策树 prepruning_智能建筑运维前探 AI天天见之五:决策树算法应用探索
- python创建空元组_Python——元组的基本语法(创建、访问、修改、删除)
- 几个交换问题的咨询?
- Spring Data Jpa 报错org.hibernate.LazyInitializationException: could not initialize proxy
- spring集成testng
- oracle 扩容undo,某银行积分系统数据库RAC环境扩充undo表空间
- Android进阶:Binder那么弱怎么面大厂?
- 可行性研究与效益分析
- 下docfetcher先下Java,docfetcher怎么用-docfetcher的使用教程 - 河东软件园
- Qt --- 基础知识
- 近视矫正手术:准分子激光,飞秒,全飞秒
- 大多数计算机专业研究生的三年是怎么过的?
- error: You have not concluded your merge (MERGE_HEAD exists).解决
- 位操作技巧:Bit Twiddling Hacks
- 人工神经网络英文简称,人工神经网络 英文
- 教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段
- java 获得唯一 数字_java生成唯一数字
- 【代码实现】数学游戏:最后一个说30就输的数学游戏