See LCS again

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

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(二分)相关推荐

  1. 各大AI研究院共35场NLP算法岗面经奉上

    本文涵盖了腾讯微信事业群模式识别中心,PCG和TEG事业群,阿里达摩院,蚂蚁金服,百度研究院,京东研究院,头条AI Lab,滴滴AI Lab,微软亚洲研究院,微软工程院以及联想研究院等等多个公司NLP ...

  2. LCS最长公共子序列和LIS最长上升子序列——例题剖析

    一.LCS最长公共子序列 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我) longest comment subsequence 模板题 longe ...

  3. [BZOJ]4650 优秀的拆分(Noi2016)(哈希+二分)

    传送门 题解 听说大佬们这题都是用SA秒掉的 然而SA的时间复杂度的确很优秀,缺点就是看不太懂-- 然后发现一位大佬用哈希华丽的过了此题,而且讲的特别清楚->这里 我们只要考虑以每一个点结尾的$ ...

  4. uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))

    标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...

  5. UVa 10635 (LIS+二分) Prince and Princess

    题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0). 在样例中就是A = {1 7 ...

  6. LIS的O(nlogn)算法(二分)

    [hdu1950]Bridging signals 传送门:点我 =================================== O(n^2)解法:(n为4w,TLE) memset(dp,1 ...

  7. 求最长上升子序列——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; ...

  8. 最长子序列(LCS, LIS, LCIS)

    (一)最长公共子序列(LCS): 我们用Xi代表{x1, x2, .. , xi}, 用Yj代表{y1, y2, .. , yj}.那么,求长度分别为n,m的两个序列X, Y的LCS,就相当于求Xm与 ...

  9. lis算法c语言,LCS、LIS、LICS算法

    首先,要理解下子串子序列的含义: 子串:来源于原序列连续的一段. 子序列:来源于原序列中元素相对顺序不变的一段,不要求元素连续. LCS(最长公共子序列) 给定两个序列A.B,设C[i, j]=LCS ...

最新文章

  1. spring cloud alibaba版本选择
  2. Dell R740服务器添加GPU卡
  3. MySQL选择数据库(MySQL USE语句)
  4. PHP文件信息相关api
  5. STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz
  6. SQL Server中使用自定义指定顺序排序
  7. vfp 调用接口取数据_2分钟教你调用全国天气预报数据接口
  8. 给萌新的Flexbox简易入门教程
  9. 理论物理极础11:电力和磁力
  10. ue4风格化材质_风格化材质 - 游戏蛮牛 - Unreal中文翻译用户手册
  11. 三维扫描仪在工业生产中的作用
  12. 数据集 过滤时 RecordCount 属性
  13. php mysql orm_PHP基于ORM操作MySQL数据库 - strtolower
  14. 关于微信公众号开发中扫码关注和关注之后继续扫码的不同点
  15. 图解|网络究竟是如何运作的?
  16. 用c++写一个cps测试
  17. 爬取manhua.fzdm.com上的妖尾漫画
  18. jwplayer 自定义logo已经右键菜单事件
  19. 2012淘宝关键字优化淘宝关键字SEO优化助手|淘宝关键字SEO优化
  20. 用Magicavoxel像搭积木一样来做一个3D像素场景

热门文章

  1. 论文投稿PACS如何填写
  2. 记得第一次看见他的时候,他刚被收容所送
  3. mysql缓冲和缓存设置
  4. 2015数据库年度盘点
  5. 离散数学-ch1-Introduction
  6. MySQL数据库基础教程
  7. 如何下载npm离线安装包
  8. 批量nii文件转换为png图像
  9. 单因素方差分析(ANOVA)及其Python库
  10. Mybatis的ResultMap结果集映射