题意:

给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率。

分析:

容易想到先把所有的字符串建成一个AC自动机

然后对于生成的随机串就相当于从AC自动机的root开始在自动机上走,然后求走到每个单词节点的概率

因为这是存在环的,不是DAG图,所以不能直接DP

考虑构造出刚开始的转移矩阵,然后对转移矩阵作矩阵乘法不断迭代就能得到正确答案了

转移矩阵如何建呢?

  1)a[i][ch[i][j]]+=p[j] (普通的转移,注意一定要累加,不能直接赋值

  2)若某个节点是danger节点,那么根据题意,它是说明已经提前走完了一个字符串,不能再走离这个位置,所以对于这种节点,只能a[i][i]=1.0,其他不要

时间复杂度O(K*(nl)^3)

最新文章

  1. vsnprintf
  2. ASP.NET MVC 5 入门教程 (2) 控制器Controller
  3. ThinkPHP 源码分析之常量 IS_AJAX
  4. WC约束示使用
  5. Cookie的Domain
  6. 关于ligerui和其他前端脚本的学习方法(适用于自己)
  7. nginx 504 Gateway Time-out错误解决办法
  8. Unity 捕获IronPython脚本错误
  9. CKEditor不借助CKFinder实现图片上传(.net版 ashx实现)
  10. WPF 只允许打开一个实例
  11. MySQL-ISNULL()、IFNULL()和NULLIF()函数
  12. linux命令及用法
  13. html5 css选择器。 井号,句号的区别
  14. 使用token和redis怎样判断账户是否失效和异地登录
  15. (转)Spring Boot(十一):Spring Boot 中 MongoDB 的使用
  16. POJ - 3984迷宫问题(最短路径输出)
  17. MySQL安装指南(转)
  18. 856. Score of Parentheses
  19. java指纹识别+谷歌图片识别技术_源代码
  20. 【MySql】【Navicat】下载,安装,激活攻略

热门文章

  1. Java多线程——进程和线程
  2. 原生开发之css样式问题(持续更新)
  3. java 线程池第一篇 之 ThreadPoolExcutor
  4. 掌握Spark机器学习库-07-随机梯度下降
  5. object -c OOP , 源码组织 ,Foundation 框架 详解1
  6. R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验
  7. linux下svn安装(ALI ECS)
  8. rem手机端页面自适应完美解决方案(最新)
  9. 迅为i.MX6UL核心板ARMCortex-A7单核NXP飞思卡尔工控行业Imx6核心板
  10. Objective-C 是动态语言