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)\)