题目意思:给出k个模式串,然后随机生成一个长度为L字符串,每个字符被选中的概率为pi 。 问构造出来的字符串不包含任何模式串的概率。
分析:显然这是一个模式串的母串的匹配,显然需要先构建一个AC自动机。我们用dp[i][j] 表示当前正在构造第i个字符,fail指针在j节点上能构造成功的概率。那么我们可以顺着fail指针向后面的状态。 注意只能扩展有效状态,也即不包含任何模式串的状态。 也即
dp [i][j]->dp[i+1][ch[j][k] ]; ch[j][k] 表示如果选k字符的话的下一状态。
VIEW CODE
#include
#include
#include
#include
#include
#include
#include
#include
#include