最长公共子序列问题

构造最长公共子序列为什么要这样构造序列

cpp 复制代码
 for(int i=1;i<=n;++i)
    {
        int k;
        cin>>k;
        b[k]=i;
    }
    for(int i=1;i<=n;++i)
    {
   	    int k;
    	cin>>k;
    	a[i]=b[k];
    }

并且为什么要求上升序列,是有什么数学知识包含在其中吗?

为什么在求最长公共子序列时,f[mid]大于等于或大于a[i]都可以,而在最长单调上升子序列中只能大于等于,不能大于

cpp 复制代码
   for(int i=1;i<=n;++i)
    {
	    if(f[ans]<a[i]) f[++ans]=a[i];
	    else
	    {
 	        int l=1,r=ans;
 	        while(l<r)
  	        { 
        	    int mid=(l+r)>>1;
        	    if(f[mid]>a[i]) r=mid;
                else l=mid+1;   
            }
            f[l]=a[i];
        }
}
相关推荐
TongSearch2 分钟前
TongSearch中分片从何而来,又解决了什么问题
java·elasticsearch·tongsearch
老鼠只爱大米3 分钟前
LeetCode经典算法面试题 #104:二叉树的最大深度(深度优先搜索、广度优先搜索等多种实现方案详细解析)
算法·leetcode·二叉树·dfs·bfs·深度优先搜索·广度优先搜索
疯狂的喵4 分钟前
分布式系统监控工具
开发语言·c++·算法
爱尔兰极光7 分钟前
LeetCode热题100--两数之和
算法·leetcode·职场和发展
水淹萌龙7 分钟前
Iconify 的离线加载
开发语言·前端·javascript
进阶小白猿9 分钟前
Java技术八股学习Day26
java·开发语言·学习
2301_822382769 分钟前
模板编译期排序算法
开发语言·c++·算法
余瑜鱼鱼鱼11 分钟前
synchronized总结
java·开发语言
小宇的天下12 分钟前
Calibre :SVRF rule file example
java·开发语言·数据库
码农水水13 分钟前
大疆Java面试被问:使用Async-profiler进行CPU热点分析和火焰图解读
java·开发语言·jvm·数据结构·后端·面试·职场和发展