「LA-3942」Remember the Word
Trie+DP,求解若干个模式串组合构成目标串的方案数
题意
给定一个由小写字母组成的长字符串$S(1≤|S|≤300000)$和$N(1≤N≤4000)$条短字符串$C_i(1≤|C_i|≤100)$,求用短字符串构成长字符串的方案数,结果对$20071027$取模。
解法
对于目标串$S$,构建数组$dp[i]$,表示位于$i$时,字符串的后缀$S’$的组成方案数。
对于模式串$C_i$,若其能与$S’$长度为$len$的前缀子串匹配,则有状态转移方程$dp[i]+=dp[i+len+1]$,由于$|C_i|≤100$,则最多只需枚举长度为$100$的前缀子串。
考虑对模式串$C_i$建立Trie树,枚举后缀子串$S’$即可求解。
代码
1 |
|