继续学数数喽QwQ…
传送门
题解
很显然这是一道优化DP数数题 ,可惜我又不会QwQ。
(此处省略0x3F3F3F3F字的思考过程)
令$f[i][j]$表示长串匹配到第$i$位,短串匹配到第$j$位的合法方案数;
$g[k][j]$表示短串匹配到第$j$位时,长串再加上一个字符使得最多能匹配$k$位的方案数。
那么就有
最后的答案就是
观察一下DP转移方程,发现$g$数组是固定的,可以通过看毛片KMP或者暴力预处理出来(抱歉我这里真的没有毛片看,但是据说隔壁巨佬知道哪里有)。
再狠狠瞅几眼转移方程,艾玛!这不是一个矩阵乘法的式子吗!
令矩阵$F[i]$的第一行为$f[i][j]$,那么就有
所以
且又知道$f[0][0]=1$、最后答案为$F[n]$第一行元素之和。
所以这题就解完了。
代码
本蒟蒻因为矩阵重载乘法运算符是忘了return调了半天QwQ
1 |
|