P1439 【模板】最长公共子序列 题解

这篇博客主要介绍了如何解决寻找两个1~n排列的最长公共子序列问题。首先,介绍了传统LCS(最长公共子序列)的O(n^2)算法,然后提出了一种优化方法,利用1~n排列的特性,将问题转换为求最长上升子序列(LIS),从而将时间复杂度降低到O(nlogn),并实现了100pts的满分解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客园同步

原题链接

简要题意:

给定两个 1 1 1 ~ n n n 的排列,求其 最长公共子序列

嗯,下面给出若干算法吧。

算法一

不管它是 1 1 1 ~ n n n 的排列这一性质。

LCS \text{LCS} LCS(即最长公共子序列)的套路方法:

f i , j f_{i,j} fi,j 表示 a 1 a_1 a1 ~ a i a_i ai b 1 b_1 b1 ~ b j b_j bj 的最长公共子序列。那么不考虑边界问题,则存在:

f i , j = {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值