Algorithms Weekly 2

A slow week

  • 牛客练习赛60 C

对于一个长度为\(n\)的字符串\(s\),计算有多少个长度为\(k\)的本质不同的子序列。

思路
\(dp_{i,j}\)为前\(i\)个字符组成的字符串中长度为\(j\)的本质不同的子序列。则有:

\[dp_{i,j}=dp_{i-1,j-1}+dp_{i-1,j}-dp[last_{s_{i}}-1][j-1] \]

其中 \(last_{s_{i}}\) 表示 \(s_{i}\) 前一次出现的位置。时间复杂度\(O(n \cdot k)\)

posted @ 2020-03-29 15:53  codancer  阅读(36)  评论(0编辑  收藏