第一道在AC自动机上DP的题,纪念纪念。 首先可以发现答案就是所有串的个数减去不包含可读串的串的个数。 前半部分是 26^m。后半部分使用DP求解。 首先建出可读串的AC自动机。 令 dp[i][j] 表示串长为 i,在AC自动机上走到编号为 j 的节点的合法串个数。 如果走到 j 的儿子 k 这个节点的串合法,那么就可以从 (i,j) 转移到(i+1,ch[j][k])。 dp[i+1][ch[j][k]]+=dp[i][j](0\le k<26)初始状态 dp[0][0]=1。答案为所有 dp[m][i] 的最大值。 可能看到这里,你最大的疑问就是:如何判断走到点 j 的串是否合法?...