1444: [Jsoi2009]有趣的游戏

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 1114  Solved: 386
[Submit][Status][Discuss]

Description

Input

注意 是0<=P

Output

Sample Input

Sample Output

HINT

30%的数据保证, n ≤ 2. 50%的数据保证, n ≤ 5. 100%的数据保证, n , l, m≤ 10.

Source

[Submit][Status][Discuss]

先做AC自动机,然后本来想gauss,但是听说做50次自乘就行,那岂不是贼简单。

 1 #include<cstdio>
 2 #include<cstring>
 3 #define siz 125
 4 char s[15]; double d[15],f[siz][siz],p[siz][siz];
 5 int n,m,l,q[siz],hd,tl,fl[siz],ch[siz][15],ed[siz],bp[15],tot=1;
 6 main(){
 7     scanf("%d%d%d",&n,&l,&m);
 8     for(int j=0,x,y;j<m;++j)
 9         scanf("%d%d",&x,&y),d[j]=1.0*x/y;
10     for(int j=1,t;j<=n;++j){
11         scanf("%s",s);t=1;
12         for(int i=0;i<l;++i){
13             if(!ch[t][s[i]-'A'])
14                 ch[t][s[i]-'A']=++tot;
15             t=ch[t][s[i]-'A'];
16         }
17         ed[t]=j,bp[j]=t;
18     }
19     for(int j=0;j<m;++j)
20         if(!ch[1][j])ch[1][j]=1;
21         else fl[q[tl++]=ch[1][j]]=1;
22     while(hd!=tl){
23         int t=q[hd++];
24         for(int j=0;j<m;++j)
25             if(!ch[t][j])ch[t][j]=ch[fl[t]][j];
26             else fl[q[tl++]=ch[t][j]]=ch[fl[t]][j];
27     }
28     for(int i=1;i<=tot;++i)
29         if(!ed[i])for(int j=0;j<m;++j)
30             f[i][ch[i][j]]+=d[j];
31         else f[i][i]=1;
32     for(int t=1;t<=50;++t){
33         memset(p,0,sizeof(p));
34         for(int k=1;k<=tot;++k)
35             for(int i=1;i<=tot;++i)
36                 for(int j=1;j<=tot;++j)
37                     p[i][j]+=f[i][k]*f[k][j];
38         memcpy(f,p,sizeof(f));
39     }
40     for(int i=1;i<=n;++i)printf("%.2lf\n",f[1][bp[i]]);
41 }
42 

@Author: YouSiki

转载于:https://www.cnblogs.com/yousiki/p/6476418.html

BZOJ 1444: [Jsoi2009]有趣的游戏相关推荐

  1. BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]

    1444: [Jsoi2009]有趣的游戏 题意:每种字母出现概率\(p_i\),有一些长度len的字符串,求他们出现的概率 套路DP的话,\(f[i][j]\) i个字符走到节点j的概率,建出转移矩 ...

  2. BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)

    1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...

  3. BZOJ 1444 [JSOI2009]有趣的游戏 (AC自动机、概率与期望DP、矩阵乘法)

    诶这题洛谷居然没有??? 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1444 题解: 我见到主要有两种做法. 一是矩阵乘法.设\(d ...

  4. BZOJ 1444 [JSOI2009]有趣的游戏 (Trie图/AC自动机+矩阵求逆)

    题目大意:给你$N$个长度相等且互不相同的模式串,现在有一个字符串生成器会不断生成字符,其中每个字符出现的概率是$p_{i}/q_{i}$,当生成器生成的字符串包含了某个模式串,则拥有该模式串的玩家胜 ...

  5. 【bzoj1444】[Jsoi2009]有趣的游戏 AC自动机+矩阵乘法

    题目描述 输入 注意 是0<=P 输出 样例输入 样例输出 题解 AC自动机+矩阵乘法 先将所有字符串放到AC自动机中,求出Trie图. 然后构建邻接矩阵:如果x不是某个字符串的末位置,则x连向 ...

  6. BZOJ1444: [Jsoi2009]有趣的游戏(Trie图,矩乘)

    Description Input 注意 是0<=P, n , l, m≤ 10. Output Sample Input input 1 3 2 2 1 2 1 2 AB BA AA inpu ...

  7. [JSOI2009]有趣的游戏

    题意 给你一个字符串集 构造一个串 S, S , S,每个位置你有 pi p i p_i的概率插入第 i i i个字符 问字符串集中每个字符串最先出现在构造的串中的概率 题解 涉及到字符串匹配首先想到 ...

  8. 计算机课堂有趣的游戏,有趣的课堂游戏作文9篇

    有趣的课堂游戏作文9篇 在学习.工作.生活中,大家都写过作文,肯定对各类作文都很熟悉吧,借助作文人们可以实现文化交流的目的.相信写作文是一个让许多人都头痛的问题,以下是小编为大家收集的有趣的课堂游戏作 ...

  9. [bzoj 1452] [JSOI2009]Count

    [bzoj 1452] [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT 二维树状数组裸题,建立 ...

最新文章

  1. Python xml ElementTree 缩进(autoindent) 换行
  2. 重要!VALSE 2021确认参会及第二次【预注册】事宜的通知
  3. 你了解你的征信吗?这六个问题必须知道!
  4. 树莓派与node.js —— onoff、dht
  5. Qt + GDAL 写入矢量图层 shp
  6. 用ES6语法存储美国邮政编码的IndexedDB数据库
  7. tomcat发布网站的三种方式
  8. linux挂载NTFS格式硬盘
  9. 最速降线问题公式推导
  10. 2月面经:真可惜...拿了小米的offer,字节却惨挂在三面
  11. 微信小程序 — tag标签设置选中效果和未选样式
  12. 新路由3 H大老毛子,2月20日padavan固件
  13. 6.3.1 延迟操作接口
  14. 深度思考故事2:出租司机的经济学
  15. 玩转步进电机控制,自定义中文编程
  16. 在智能时代我们能做什么---读《智能时代》有感
  17. [wxWidgets]XRC和动态子菜单
  18. The provided URL is empty. Will try picking an instance via load-balancing.
  19. pycharm使用超级鹰无输出结果/尝试新的跨平台问题
  20. C语言代码覆盖率测试工具-OpenCppCoverage介绍

热门文章

  1. HTML学习笔记之二(回到顶部 与 回到底部)
  2. ARM的CACHE原理(转)
  3. 动态规划学习之三种方法解决斐波拉契数
  4. 实现DFS之“农田灌溉”
  5. 时序图、活动图、状态图、协作图的区别
  6. golang内置接口error
  7. netty-阻塞模式,非阻塞模式
  8. 数据结构:回溯--解决八皇后问题
  9. oracle, to_char(), to_number, ORA_01722
  10. bug修复录-qq浏览器中post请求时body为空