Description

Input

注意 是0<=P, n , l, m≤ 10.

Output

Sample Input

input 1
3 2 2
1 2
1 2
AB
BA
AA
input 2
3 4 2
1 2
1 2
AABA
ABAA
BAAA

Sample Output

output 1
0.25
0.50
0.25

output 2
0.31
0.33
0.37

解题思路:

可以理解为Trie上倍增佛洛依德做矩乘累和。

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
struct trnt{
int ch[];
int fl;
bool fin;
}tr[];
class queue{
public:
queue(void){h=,t=;return ;}
int nxt(int x){if(x+>=)return ;return x+;}
void push(int x){t=nxt(t);line[t]=x;return ;}
void pop(void){h=nxt(h);return ;}
bool empty(void){return nxt(t)==h;}
int front(void){return line[h];}
private:
int h,t,line[];
}Q;
int siz;
int n,m,l;
int ansp[];
char tmp[];
double lst[];
double ans[];
double martix[][];
double temp[][];
double pre[];
void Insert(char *a,int &plc)
{
int root=;
int len=l;
for(int i=;i<=len;i++)
{
int c=a[i]-'A';
if(!tr[root].ch[c])
tr[root].ch[c]=++siz;
root=tr[root].ch[c];
}
tr[root].fin=true;
plc=root;
return ;
}
void Build(void)
{
int root=;
for(int i=;i<m;i++)
if(tr[root].ch[i])
Q.push(tr[root].ch[i]);
while(!Q.empty())
{
root=Q.front();
Q.pop();
for(int i=;i<m;i++)
{
if(tr[root].ch[i])
{
tr[tr[root].ch[i]].fl=tr[tr[root].fl].ch[i];
Q.push(tr[root].ch[i]);
}else
tr[root].ch[i]=tr[tr[root].fl].ch[i];
}
}
return ;
}
int main()
{
scanf("%d%d%d",&n,&l,&m);
for(int i=;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
pre[i]=(double)(a)/(double)(b);
}
for(int i=;i<=n;i++)
{
scanf("%s",tmp+);
Insert(tmp,ansp[i]);
}
Build();
for(int i=;i<=siz;i++)
{
if(tr[i].fin)
{
martix[i][i]=1.00;
continue;
}
for(int j=;j<m;j++)
martix[i][tr[i].ch[j]]+=pre[j]; }
int t=;
/*for(int i=0;i<=siz;i++)
{
for(int j=0;j<=siz;j++)
printf("%.2lf ",martix[i][j]);
puts("");
}*/
while(t--)
{
for(int i=;i<=siz;i++)
{
for(int j=;j<=siz;j++)
{
temp[i][j]=;
for(int k=;k<=siz;k++)
{
temp[i][j]+=martix[i][k]*martix[k][j];
}
}
}
for(int i=;i<=siz;i++)
for(int j=;j<=siz;j++)
martix[i][j]=temp[i][j];
}
for(int i=;i<=n;i++)
printf("%.2lf\n",martix[][ansp[i]]);
return ;
}

BZOJ1444: [Jsoi2009]有趣的游戏(Trie图,矩乘)的更多相关文章

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

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

  2. BZOJ1444[Jsoi2009]有趣的游戏——AC自动机+概率DP+矩阵乘法

    题目描述 输入 注意 是0<=P, n , l, m≤ 10. 输出 样例输入 input 1 3 2 2 1 2 1 2 AB BA AA input 2 3 4 2 1 2 1 2 AABA ...

  3. BZOJ1444:[JSOI2009]有趣的游戏(AC自动机,矩阵乘法)

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

  4. [日常摸鱼]bzoj1444 [JSOI2009]有趣的游戏——AC自动机+矩阵

    今天学校跳蚤市场摆摊聚众吸毒打call,东西卖了一百多好开心_(:з」∠)_ (然后大家中午就去吃了一顿好的x) 下午听演讲然后现在来填坑orz(其实是昨晚的坑) 题目:bzoj1444 先用字符串构 ...

  5. BZOJ1444 : [Jsoi2009]有趣的游戏

    建立AC自动机,并求出转移矩阵. 再用$\sum E(终止节点)=1$去替换第一个方程,高斯消元即可. 时间复杂度$O(n^3l^3)$. 注意精度问题,要特判0.00的情况. #include< ...

  6. bzoj1444[Jsoi2009]有趣的游戏[AC自动机]

    题面 bzoj 我要向师父学习善待每一只数据结构 考虑成环,那么高斯消元 然鹅这道题太小了 所以直接转移矩阵自乘就好啦 终点不向外连边 有一条向自己的,概率为一的自环来作为结尾 对于其他店 若有边\( ...

  7. 【BZOJ1444】[JSOI2009]有趣的游戏(高斯消元,AC自动机)

    [BZOJ1444][JSOI2009]有趣的游戏(高斯消元,AC自动机) 题面 BZOJ 题解 先把\(AC\)自动机构建出来,最好构成\(Trie\)图.然后这样子显然是在一个有向图中有一堆概率的 ...

  8. 【BZOJ1444】[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法

    [BZOJ1444][Jsoi2009]有趣的游戏 Description Input 注意 是0<=P Output Sample Input Sample Output HINT  30%的 ...

  9. 【bzoj1444】[Jsoi2009]有趣的游戏

    1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1007  Solved: 334[Submit][Statu ...

随机推荐

  1. sql阻塞进程查询

    select A.SPID as 被阻塞进程,a.CMD AS 正在执行的操作,b.spid AS 阻塞进程号,b.cmd AS 阻塞进程正在执行的操作 from master..sysprocess ...

  2. POJ - 3847 Moving to Nuremberg 动归

    POJ - 3847 Moving to Nuremberg 题意:一张无向有权图,包括边权和点权,求一点,使得到其他点的点权*边权之和最小 思路: #pragma comment(linker, & ...

  3. 添加 validate 验证规则

    上篇文章链接:http://blog.csdn.net/chenmoimg_/article/details/71191476 修改 msg.js $.extend($.validator.messa ...

  4. 推荐《深入浅出深度学习原理剖析与python实践》PDF+代码

    <深入浅出深度学习原理剖析与Python实践>介绍了深度学习相关的原理与应用,全书共分为三大部分,第一部分主要回顾了深度学习的发展历史,以及Theano的使用:第二部分详细讲解了与深度学习 ...

  5. 学习推荐《从Excel到Python数据分析进阶指南》高清中文版PDF

    Excel是数据分析中最常用的工具,本书通过Python与Excel的功能对比介绍如何使用Python通过函数式编程完成Excel中的数据处理及分析工作.在Python中pandas库用于数据处理,我 ...

  6. Maven学习总结(20)——Maven pom.xml配置再体会

    Maven的pom.xml配置文件详解 <!--父项目的坐标.如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值. 坐标包括group ID,artifact ID和 vers ...

  7. WMI获取进程CPU占用率

    Monitor % Process CPU Usage (specific process) http://www.tek-tips.com/viewthread.cfm?qid=395765 for ...

  8. [React] Validate Custom React Component Props with PropTypes

    In this lesson we'll learn about how you can use the prop-types module to validate a custom React co ...

  9. sqoop 1.4.4-cdh5.1.2高速入门

    一.高速入门 (一)下载安装 1.下载并解压 wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.2.tar.gz tar - ...

  10. Swift Standard Library Reference.pdf

    Swift Standard Library Reference.pdf 下载地址 http://download.csdn.net/detail/swifttrain/7446331 自己的Mark ...