最长公共子序列问题

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

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];
        }
}
相关推荐
Vfw3VsDKo几秒前
Flink源码阅读:Netty通信
java·前端·flink
疯狂打码的少年3 分钟前
【Day 6 Java转Python】字符串处理的“降维打击”
java·开发语言·python
汀、人工智能21 分钟前
[特殊字符] 第103课:单词搜索II
数据结构·算法·均值算法·前缀树·trie·单词搜索ii
EFCY1MJ9022 分钟前
MYSQL ID耗尽应急恢复方案
java·数据库·mysql
hogenlaw33 分钟前
Stream流
android·java·开发语言
ShCDNay43 分钟前
Python核心底层知识(个人记录)
开发语言·python
xyq20241 小时前
组合实体模式
开发语言
来自远方的老作者1 小时前
第7章 运算符-7.2 赋值运算符
开发语言·数据结构·python·赋值运算符
A.A呐1 小时前
【C++第二十四章】异常
开发语言·c++
wanderist.1 小时前
算法模板-字符串
数据结构·算法·哈希算法