专栏文章

题解:AT_agc021_d [AGC021D] Reversed LCS

AT_agc021_d题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mipv1mc9
此快照首次捕获于
2025/12/03 18:24
3 个月前
此快照最后确认于
2025/12/03 18:24
3 个月前
查看原文
很有意思的题啊!
一开始看到这个正串和反串的 LPSLPS,就感觉会往回文那边靠。不过这个结论还是很厉害的:
  • 性质:正串和反串的 LCS=LCS= 原串的最长回文子序列。其中子序列指的是非连续子序列。
感受一下就感觉很对,而且并不难证明这个结论,很巧妙地:
我们可以通过证明不等关系来证明它必定取等:首先由于最长回文子序列反过来还是一样的,都出现在正串和反串里,所以 LPSLCSLPS\leq LCS,其中 LPSLPS 是最长回文子序列的简称。
随后我们要证明 LPSLCSLPS\geq LCS,就可以得到 LCS=LPSLCS=LPS
考虑这个 LCSLCS 在原序列里面长成什么样,设它长度为 kk,是原串 TT 中的 Ti1,Ti2,,Tik(i1<i2<<ik)T_{i_1},T_{i_2},\dots,T_{i_k}(i_1<i_2<\dots<i_k),以及反过来我们也能找到这个串,设为:Tjk,Tj2,,Tj1(j1>j2>>jk)T_{j_k},T_{j_2},\dots,T_{j_1}(j_1>j_2>\dots>j_k)(在 TT' 中的顺序是正过来的)。
我们总能找到一个位置使 ip<jpi_p<j_pip+1jp+1i_{p+1}\geq j_{p+1},方便起见设 ik+1=T+1i_{k+1}=\lvert T \rvert+1 以及 jk+1=1j_{k+1}=-1,这样保证两个串必然有个这样的交点。(画个图就好理解了)
现在,当 ip+1>jp+1i_{p+1}>j_{p+1} 的时候,我们很明显可以把串变成 Ti1,,Tip,Tjp,,Tj1T_{i_1},\dots,T_{i_p},T_{j_p},\dots,T_{j_1},这是一个回文串;以及 Tjk,Tjk1,,Tjp+1,Tip+1,,TikT_{j_{k}},T_{j_{k-1}},\dots,T_{j_{p+1}},T_{i_{p+1}},\dots,T_{i_k}。都是回文序列,而且总长度是 2k2k 啊!这意味着至少其中有一个长度为 kk,我们就说明了 LCSLCS 肯定可以是 LPSLPS
而当 ip+1=jp+1i_{p+1}=j_{p+1} 的时候,我们把这个位置分给两个回文串就可以如上构造了:Ti1,,Tip,Tip+1,Tjp,,Tj1T_{i_1},\dots,T_{i_p},T_{i_{p+1}},T_{j_p},\dots,T_{j_1},往另一个串里塞 Tjp+1T_{j_{p+1}} 就得到了总长为 2k2k 的两个回文串。画张图辅助理解:
接下来问题转化为原串中最长回文子序列了,这应当是简单的,就不多说了。

评论

1 条评论,欢迎与作者交流。

正在加载评论...