AGC024F 题解

First Post:

Last Update:

思路是很简单的,但是没有往这个方向细想,所以没有发现可行的做法。看来想题时一些瞬间的想法都要记在草稿上,方便思路回溯。这一点其实已经在做,但还可以更好。

不妨直接对每个串求出其是 中多少个串的子序列,最后枚举算答案。

匹配子序列有众所周知的贪心过程:顺序枚举串 的每个字符,在串 中找到第一个等于这个字符的位置,将串 中这个位置及之前的部分删掉,继续匹配。如果 中每个字符都能成功操作则匹配成功。

在这里考虑直接把这两个串的状态压进 DP 状态,设 表示有多少个串能达到 “已匹配部分为 ,未匹配部分为 ” 这个状态。(实质上是把上述贪心过程中的一个时刻记录下来)。转移不难,分讨即可。

因为 ,总状态数是 的。记状态时记录 即可。将所有长度 串编个号,然后 数组记录 的长度与编号即可。