最长公共子序列问题

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

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];
        }
}
相关推荐
better_liang12 小时前
每日Java面试场景题知识点之-MySQL索引
java·数据库·mysql·性能优化·索引
Yzzz-F12 小时前
2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]
算法
abant212 小时前
leetcode 114 二叉树变链表
算法·leetcode·链表
tankeven12 小时前
HJ165 小红的优惠券
c++·算法
Aktx20FNz12 小时前
一文学习 Spring AOP 源码全过程
java·学习·spring
Nyarlathotep011312 小时前
ThreadLocal
java·后端
Jasmine_llq12 小时前
《B3840 [GESP202306 二级] 找素数》
开发语言·c++·试除法·顺序输入输出算法·素数判定算法·枚举遍历算法·布尔标记算法
先积累问题,再逐次解决12 小时前
快速幂优美算法
算法
梁山好汉(Ls_man)13 小时前
鸿蒙_ArkTS解决Duplicate function implementation错误
开发语言·华为·typescript·harmonyos·鸿蒙
xiaoshuaishuai813 小时前
Git二分法定位Bug
开发语言·python