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)