最长公共子序列问题

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

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];
        }
}
相关推荐
Java面试题总结6 小时前
BCrypt密码加密
开发语言·python
cici158746 小时前
C# 五子棋小游戏源码(人机对战)
开发语言·单片机·c#
iiiiyu7 小时前
面向对象高级接口的综合案例
java·开发语言·数据结构·编程语言
fzil0017 小时前
让 AI 自己协作 —— 多智能体(Swarm)系统的设计与实现
java·开发语言·人工智能·ubuntu
Mem0rin7 小时前
[Java/数据结构]二叉树练习题几则
java·开发语言·数据结构
止语Lab7 小时前
Go 错误分层实战:从裸奔到三层防线
开发语言·golang
清平乐的技术专栏7 小时前
Python依赖包实现window下载上传到Linux
linux·开发语言·python
lhbian7 小时前
PHP vs Java vs Go:编程语言终极对比
java·spring boot·后端·kafka·linq
java修仙传7 小时前
从手写 Redis 锁到 Redisson:我对分布式锁安全性的理解
java·数据库·redis·分布式
地平线开发者7 小时前
目标检测的 Anchor-Free 和 NMS 到底是什么?
算法·自动驾驶