最长公共子序列问题

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

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];
        }
}
相关推荐
1368木林森6 小时前
深入浅出:JDK1.7→JDK1.8 HashMap进化史,再到ConcurrentHashMap的并发救赎
java·开发语言
csbysj20207 小时前
Web 品质样式表:构建高效、美观的网页设计指南
开发语言
web3.08889997 小时前
tb关键词API接口——解锁独一无二的商品
java·数据库·https
小白学大数据7 小时前
企业精准数据分析双路径对比:运营商大数据与 Python 爬虫技术选型与实践
大数据·开发语言·爬虫·python·数据分析
敖正炀7 小时前
集合-Map深入分析
java
Hello!!!!!!7 小时前
C++基础(五)——屏幕和文件输入输出
开发语言·c++·算法
ytttr8737 小时前
C++ LZW 文件压缩算法实现
开发语言·c++
小谢小哥7 小时前
51-限流算法详解
java·后端·架构
1candobetter7 小时前
JAVA后端开发——多模块项目重命名体系解析
java·开发语言·intellij-idea
citi7 小时前
OpenViking 本地搭建指南
开发语言·python·ai