Loading

AT_arc157_f [ARC157F] XY Ladder LCS

首先发现这个 LCS 限制很强,但你的交换操作很好的弥补了这一点。

首先不显然存在一种方式使得 \(s_{i_k} = t_{j_k}\)\(i_k \ge j_k\),这是很显然的,因为可以调整一下顺序啥的。

然后不显然的设计一个 DP,\(f_{i, s}\) 表示到了 \(s_i\),匹配到了 \(t_k\),且此时 \(t_{k + 1\sim i}\) 记录下来为 \(s\) 的最长 LCS,那么转移就分类讨论一下现在到底选择匹不匹配,选择匹配肯定是找到 \(s\) 中第一个相同的匹配,这个 DP 感觉是处理 LCS 问题的常见手法。

可以让最高位前面设一个 \(1\) 区分信息长度位,那么复杂度 \(O(n 2^n)\),显然不能过。

但是非常 amazing 的一点是,你发现值域竟然只有 \(2\),你发现上述做法完全不依赖于这个性质,所以思考这个东西有啥用。

非常注意不到的是,对于 \(s, t\) 每连续长度为 \(3\) 的子区间,总存在一种调整方式,使得 LCS 长度 \(\ge 2\),这样我们就知道,答案长度一定大于 \(\frac{2n}{3}\),那么我的 \(s\) 长度最多为 \(\frac{n}{3}\),所以此时复杂度变为 \(O(n 2^{\frac{n}{3}})\)

posted @ 2026-01-07 18:44  Alexande  阅读(6)  评论(0)    收藏  举报