GT考试

这篇题解

解释一下

首先是状态的定义,具体来说,\(f[i][j]\)应该表示考虑了准考证前\(i\)位,准考证的后\(j\)位与不吉利数字最多匹配的位数为\(j\),且整个准考证号不包含不吉利数字的方案数

这个最多匹配的意思:比如不吉利数字是\(1212\),准考证号是\(551212\),那么这就是\(f[6][4]\)的一个元素,而不是\(f[6][2]\)的一个元素

所以不难知道,答案就是\(\sum_{i=0}^{m-1}f[n][i]\)

考虑转移,一个很大的误区就是前\(i\)位的后缀匹配了\(j\)位,那么前\(i-1\)位的后缀就一定匹配了\(j-1\)位。比如一种情况,前\(i-1\)位匹配了\(k\)位(\(k>j-1\)),但是加上一个字符之后没办法匹配\(k+1\)位,然而却可以匹配\(j\)

所以我们要处理\(g\)数组,表示当前后缀的匹配长度为\(k\),加上多少种字符之后匹配长度变成\(j\)

就是这个DP状态比较新,可以记住

posted @ 2024-01-24 18:04  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报