最长公共子序列问题

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

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];
        }
}
相关推荐
山山而川 潺潺如镜3 小时前
python防止程序多开,但程序运行脚本
android·开发语言·python
m0_598177233 小时前
SQL(5)- 事务
java·数据库·sql
神色自若3 小时前
Net8/Net10开源企业级跨平台数据采集系统,基于Avaloniaui
开发语言·avaloniaui·net8
莫生灬灬3 小时前
VueMultiBrowser - 开源多浏览器管理器
运维·开发语言·chrome·c#·自动化·vue
郝学胜-神的一滴3 小时前
Qt重复添加控件问题探析:现象、原理与解决方案
开发语言·数据库·c++·qt·程序人生
C++chaofan4 小时前
JUC 并发编程从入门到精通(超详细笔记 + 实战案例)
java·jvm·spring boot·redis·后端·并发·juc
java porter4 小时前
系统架构设计之单例模式(下)
开发语言·javascript·单例模式
小北方城市网4 小时前
第 4 课:前端工程化进阶 ——Vue 核心语法 + 组件化开发(前端能力质的飞跃)
大数据·开发语言·数据库·python·状态模式·数据库架构
凌乱风雨12114 小时前
从源码角度解析C++20新特性如何简化线程超时取消
前端·算法·c++20
zhaokuner4 小时前
02-通用语言与协作-DDD领域驱动设计
java·开发语言·设计模式·架构