最长公共子序列问题

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

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];
        }
}
相关推荐
river66几秒前
java开发——为什么要使用动态代理?
java
Zayn~6 分钟前
JVM系列--虚拟机类加载机制
java
m0_7482480213 分钟前
Redis使用手册
java
CoderCodingNo16 分钟前
【GESP】C++二级真题 luogu-b3924, [GESP202312 二级] 小杨的H字矩阵
java·c++·矩阵
_Itachi__18 分钟前
LeetCode 热题 100 73. 矩阵置零
算法·leetcode·矩阵
2501_9032386539 分钟前
Spring MVC中环境配置的实战应用
java·spring·mvc·个人开发
夏末秋也凉40 分钟前
力扣-贪心-376 摆动序列
算法·leetcode
奔跑吧邓邓子41 分钟前
【Python爬虫(34)】Python多进程编程:开启高效并行世界的钥匙
开发语言·爬虫·python·多进程
程序员侠客行42 分钟前
Spring事务原理详解 三
java·后端·spring·架构