最长公共子序列

Posted liankewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共子序列相关的知识,希望对你有一定的参考价值。

最长公共子序列

给四个长度为 $n$ 的序列 $ {a_i},{b_i},{c_i},{d_i}$。求这四个序列最长公共子序列的长度。

子序列为原序列删去若干位置后剩下的序列,可以不用连续,例如$ {1,2},{1,3}$ 均为 $ {1,2,3}$。

 

数据范围
对于所有数据:$ 1 le n le 10000,1 le a_i,b_i,c_i,d_i le n $,${a_i},{b_i},{c_i} $ 任何数字出现次数都 $ le 2$ 次。

Subtask 1(30%) : $ n le 50$

Subtask 2(40%) : ${a_i},{b_i},{c_i},{d_i}$ 为1 到n排列。

Subtask 3(30%) : 无特殊性质。

 


Sol

考虑dp,f[i][0/1][0/1][0/1]表示d中匹配到第i位,abc中匹配的是前一个还是后一个的最长公共子序列。

效率64*n*n,T了

我们发现当abcd四维都小于时才可以转移。

那我们们就四维偏序cdq维护。

 

以上是关于最长公共子序列的主要内容,如果未能解决你的问题,请参考以下文章

最长公共子序列的应用

C语言实现最长公共子串与最长公共子序列

最长递增子序列 && 最大子序列最长递增子序列最长公共子串最长公共子序列字符串编辑距离

codevs 1862 最长公共子序列(求最长公共子序列长度并统计最长公共子序列的个数)

最长公共子串和最长公共子序列

最长公共子串与最长公共子序列