最长公共子序列问题

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

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];
        }
}
相关推荐
IT 行者几秒前
实战LangChain4j集成MCP Server:让Java AI应用具备工具调用能力
java·开发语言·人工智能
独断万古他化2 分钟前
【算法通关】二叉树中的深搜:DFS 递归解题套路
算法·二叉树·深度优先·dfs·递归
㓗冽3 分钟前
2026.03.27(第三天)
数据结构·c++·算法
ok_hahaha4 分钟前
java从头开始-黑马点评-商户查询缓存
java·spring·缓存
sali-tec4 分钟前
C# 基于OpenCv的视觉工作流-章44-直线卡尺
图像处理·人工智能·opencv·算法·计算机视觉
Magic--4 分钟前
经典概率题:飞机座位分配问题(LeetCode 1227)超详细解析
算法·leetcode·职场和发展
always_TT6 分钟前
C语言中的“副作用”是什么?
c语言·开发语言
LINgZone216 分钟前
Java Mock 测试框架 Mockito
java·windows·microsoft
urkay-25 分钟前
Android 图片轮廓提取与重叠轮廓合并处理
android·算法·iphone
七七肆十九25 分钟前
PTA 7-38 数列求和-加强版
数据结构·算法