题目链接:http://poj.org/problem?id=2778
题意:给定m个模板串,问有多少种长度为n的字符串使得它不包含任何一个模板串。
首先根据模板串建出trie图。可以想到任意一个字符串都对应了trie图上从根结点起始的一条路径。因此问题转化为在trie图中从根结点开始长度为n的,且不经过某些点的不同路径数量。
设A是图G的邻接矩阵,即:
$$
a_{ij}=
\begin{cases}
0& \text{节点i和节点j之间无边相连} \\
n& \text{节点i和节点j之间有边相连且边数为n}
\end{cases}
$$
注:除非有自环,否则$a_{ii}$为$0$
令$B=A^l$,则$b_{ij}$表示节点$i$到节点$j$长度为$l$的不同路径的数量。
将邻接矩阵中不能经过的节点(单词节点和能通过后缀链接到达单词节点的节点)对应的行列全部置为0,然后用矩阵快速幂算出结果即可。
1 |
|