最长公共子序列问题

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

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