nyistOJ-See LCS again(二分)
See LCS again
- 描述
-
There are A, B two sequences, the number of elements in the sequence is n、m;
Each element in the sequence are different and less than 100000.
Calculate the length of the longest common subsequence of A and B.
- 输入
-
The input has multicases.Each test case consists of three lines;
The first line consist two integers n, m (1 < = n, m < = 100000);
The second line with n integers, expressed sequence A;
The third line with m integers, expressed sequence B; - 输出
- For each set of test cases, output the length of the longest common subsequence of A and B, in a single line.
- 样例输入
-
5 4 1 2 6 5 4 1 3 5 4
- 样例输出
-
3
-
上传者
TC_胡仁东题意:给两个数组,求这两个数组的最长公共子序列(唯一不同的是这两个数组里不存在相同的元素)
题解:将A数组出现的元素位置标记一下,B数组只需存在A数组里有的元素。剩下的就是二分查找共同元素即可
-
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define maxn 100005 int a[maxn],b[maxn],c[maxn]; int n,m; int work() {int len=1,i,l,r;b[1]=a[1];for(i=2;i<=m;i++){l=1;r=len;if(b[len]<a[i])b[++len]=a[i];else{while(l<=r){int mid=(l+r)/2;if(b[mid]>=a[i])r=mid-1;elsel=mid+1;}b[l]=a[i];}}return len; } int main() {int i,x,ans;while(scanf("%d%d",&n,&m)!=EOF){memset(c,-1,sizeof(c));for(i=1;i<=n;i++){scanf("%d",&x);c[x]=i;}for(i=1;i<=m;i++){scanf("%d",&x);a[i]=c[x];}ans=work();printf("%d\n",ans);} }
nyistOJ-See LCS again(二分)相关推荐
- 各大AI研究院共35场NLP算法岗面经奉上
本文涵盖了腾讯微信事业群模式识别中心,PCG和TEG事业群,阿里达摩院,蚂蚁金服,百度研究院,京东研究院,头条AI Lab,滴滴AI Lab,微软亚洲研究院,微软工程院以及联想研究院等等多个公司NLP ...
- LCS最长公共子序列和LIS最长上升子序列——例题剖析
一.LCS最长公共子序列 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我) longest comment subsequence 模板题 longe ...
- [BZOJ]4650 优秀的拆分(Noi2016)(哈希+二分)
传送门 题解 听说大佬们这题都是用SA秒掉的 然而SA的时间复杂度的确很优秀,缺点就是看不太懂-- 然后发现一位大佬用哈希华丽的过了此题,而且讲的特别清楚->这里 我们只要考虑以每一个点结尾的$ ...
- uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))
标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...
- UVa 10635 (LIS+二分) Prince and Princess
题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0). 在样例中就是A = {1 7 ...
- LIS的O(nlogn)算法(二分)
[hdu1950]Bridging signals 传送门:点我 =================================== O(n^2)解法:(n为4w,TLE) memset(dp,1 ...
- 求最长上升子序列——LIS的O(nlogn)算法(二分)
LIS的O(nlogn)算法(二分) 传送门:点我 O(n^2)解法:(n为4w,TLE) memset(dp,1,sizeof(dp)); int ans=-1; for(i=2; i<=n; ...
- 最长子序列(LCS, LIS, LCIS)
(一)最长公共子序列(LCS): 我们用Xi代表{x1, x2, .. , xi}, 用Yj代表{y1, y2, .. , yj}.那么,求长度分别为n,m的两个序列X, Y的LCS,就相当于求Xm与 ...
- lis算法c语言,LCS、LIS、LICS算法
首先,要理解下子串子序列的含义: 子串:来源于原序列连续的一段. 子序列:来源于原序列中元素相对顺序不变的一段,不要求元素连续. LCS(最长公共子序列) 给定两个序列A.B,设C[i, j]=LCS ...
最新文章
- spring cloud alibaba版本选择
- Dell R740服务器添加GPU卡
- MySQL选择数据库(MySQL USE语句)
- PHP文件信息相关api
- STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz
- SQL Server中使用自定义指定顺序排序
- vfp 调用接口取数据_2分钟教你调用全国天气预报数据接口
- 给萌新的Flexbox简易入门教程
- 理论物理极础11:电力和磁力
- ue4风格化材质_风格化材质 - 游戏蛮牛 - Unreal中文翻译用户手册
- 三维扫描仪在工业生产中的作用
- 数据集 过滤时 RecordCount 属性
- php mysql orm_PHP基于ORM操作MySQL数据库 - strtolower
- 关于微信公众号开发中扫码关注和关注之后继续扫码的不同点
- 图解|网络究竟是如何运作的?
- 用c++写一个cps测试
- 爬取manhua.fzdm.com上的妖尾漫画
- jwplayer 自定义logo已经右键菜单事件
- 2012淘宝关键字优化淘宝关键字SEO优化助手|淘宝关键字SEO优化
- 用Magicavoxel像搭积木一样来做一个3D像素场景