UVA11468 Substring --- AC自动机 + 概率DP
UVA11468 Substring
题目描述:
给定一些子串T1...Tn
每次随机选择一个字符(概率会给出)
构造一个长为n的串S,求T1...Tn不是S的子串的概率
直接把T1...Tn建成AC自动机
把无法到达的节点打上标记
\(dp(i,j)\)表示长度为 i , 在 j 号节点的概率
初始\(dp(0,0) = 1\)
转移方程:\(dp(i,j)=\sum_{mark(trans(j,c))\: !=\: 1} dp(i,trans(j,c))*p(c)\)
但这样不方便转移,
考虑一个状态能转移到哪些状态来DP
最终结果为 \(\sum_{0 <= i <= ac.size} \; dp(i,n)\)
记得看题目数据范围(看错了长度范围,莫名调了1h)
喵喵喵?喵喵喵! 喵喵喵......