[JSOI2009] 有趣的游戏
1444: [Jsoi2009]有趣的游戏
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 1800 Solved: 645
[Submit][Status][Discuss]
Description

Input

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

Sample Input
3 2 2
1 2
1 2
AB
BA
AA
input 2
3 4 2
1 2
1 2
AABA
ABAA
BAAA
Sample Output
0.25
0.50
0.25
output 2
0.31
0.33
0.37
HINT

#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define D double
const int maxn=205;
const D eps=1e-9;
int ch[maxn][27],n,m,l,cnt,X,Y;
int f[maxn],rot=0,dy[27];
D a[maxn][maxn],p[27];
char s[37];
bool islef[maxn]; inline int Id(char x){ return x-'A'+1;} inline void Ins(int x){
int now=rot;
for(int i=1,C;i<=l;i++){
C=Id(s[i]);
if(!ch[now][C]) ch[now][C]=++cnt;
now=ch[now][C];
} dy[x]=now,islef[now]=1;
} inline void getfail(){
queue<int> q;
for(int i=1;i<=m;i++) if(ch[rot][i]){ f[ch[rot][i]]=0,q.push(ch[rot][i]);}
int x,v; while(!q.empty()){
x=q.front(),q.pop();
for(int i=1;i<=m;i++){
v=ch[x][i];
if(!v){ ch[x][i]=ch[f[x]][i]; continue;} q.push(v);
f[v]=ch[f[x]][i];
}
}
} inline void build(){
a[0][cnt+1]=1;
for(int i=0;i<=cnt;i++){
a[i][i]=1;
if(!islef[i]) for(int j=1;j<=m;j++) a[ch[i][j]][i]-=p[j];
} /*
for(int i=0;i<=cnt;i++){
for(int j=0;j<=cnt+1;j++) printf("%.2lf ",a[i][j]);
puts("");
}
*/
} inline void xy(){
for(int i=0;i<=cnt;i++){
int tmp=i;
for(int j=i+1;j<=cnt;j++) if(a[j][i]>a[tmp][i]) tmp=j;
if(tmp>i) for(int k=cnt+1;k>=i;k--) swap(a[i][k],a[tmp][k]); for(int j=i+1;j<=cnt;j++) if(fabs(a[j][i])>eps){
D o=a[j][i]/a[i][i];
for(int k=cnt+1;k>=i;k--) a[j][k]-=a[i][k]*o;
}
} for(int i=cnt;i;i--){
for(int j=i+1;j<=cnt;j++) a[i][cnt+1]-=a[i][j]*a[j][cnt+1];
a[i][cnt+1]/=a[i][i];
}
} inline void solve(){
getfail();
build();
xy();
} int main(){
scanf("%d%d%d",&n,&l,&m);
for(int i=1;i<=m;i++) scanf("%d%d",&X,&Y),p[i]=X/(D)Y;
for(int i=1;i<=n;i++){
scanf("%s",s+1);
Ins(i);
} solve(); for(int i=1;i<=n;i++) printf("%.2lf\n",a[dy[i]][cnt+1]); return 0;
}
[JSOI2009] 有趣的游戏的更多相关文章
- BZOJ:4820: [Sdoi2017]硬币游戏&&BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...
- BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
1444: [Jsoi2009]有趣的游戏 题意:每种字母出现概率\(p_i\),有一些长度len的字符串,求他们出现的概率 套路DP的话,\(f[i][j]\) i个字符走到节点j的概率,建出转移矩 ...
- BZOJ 1444:[JSOI2009]有趣的游戏
BZOJ 1444:[JSOI2009]有趣的游戏 题目链接 首先我们建出Trie图,然后高斯消元. 我们设\(f_i\)表示经过第\(i\)个点的期望次数: \[ f_x=\sum i\cdot p ...
- BZOJ 1444 [Jsoi2009]有趣的游戏 (AC自动机 + 概率DP + Gauss)
1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1382 Solved: 498[Submit][Statu ...
- 【BZOJ1444】[JSOI2009]有趣的游戏(高斯消元,AC自动机)
[BZOJ1444][JSOI2009]有趣的游戏(高斯消元,AC自动机) 题面 BZOJ 题解 先把\(AC\)自动机构建出来,最好构成\(Trie\)图.然后这样子显然是在一个有向图中有一堆概率的 ...
- 1444: [Jsoi2009]有趣的游戏
1444: [Jsoi2009]有趣的游戏 链接 分析: 如果一个点回到0号点,那么会使0号点的概率增加,而0号点的概率本来是1,不能增加,所以这题用期望做. 设$x_i$表示经过i的期望次数,然后初 ...
- 【bzoj1444】[Jsoi2009]有趣的游戏
1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1007 Solved: 334[Submit][Statu ...
- 【BZOJ1444】[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法
[BZOJ1444][Jsoi2009]有趣的游戏 Description Input 注意 是0<=P Output Sample Input Sample Output HINT 30%的 ...
- luogu P6125 [JSOI2009]有趣的游戏
LINK:有趣的游戏 直接说做法了.首先是 我是不会告诉你我看完题后不太会 摸了2h鱼后看题解 一直翻发现自己题目有些没读完整.. 题目中说了每个字符串长度相同 而我一直在思考AC自动机可能存在一些节 ...
随机推荐
- 第三方库的安装:Pangolin
Pangolin: 一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/stevenlovegrove/Pang ...
- hnust 原石法阵
问题 F: 原石法阵 时间限制: 1 Sec 内存限制: 128 MB提交: 1098 解决: 161[提交][状态][讨论版] 题目描述 WZH有一个由原石构成的n阶三角形魔法阵,三角形魔法阵如 ...
- excel模板解析—桥接模式:分离解析模板和业务校验
在做excel模板解析的时候,其实会有两个部分,第一,将模板读取出来,校验一些必录项等. 但除了这些,在数据真正被业务线使用的时候,还会有一些其他的校验,比如说:根据业务,年龄是不能超过多少岁的,包括 ...
- Hexo-设置阅读全文
最近使用Hexo搭建了自己的博客,并且使用了简洁但是强大的NexT主题.这里介绍一下NexT主题下设置在首页显示一篇文章的简介,在简介后面提供一个链接阅读全文来进入文章的详情页.效果请看 我的小窝 在 ...
- (总结)统计Apache或Nginx访问日志里的独立IP访问数量的Shell
1.把IP数量直接输出显示:cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|wc -l 2.把IP数量输出到文本显示:cat acces ...
- 滚动数组要来回赋初值呀。。orzzzzzzzzzzzzzzzzzzzzzzzzzz
2个小时的人参orzzzzzzzzzzzzzzz ……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~...……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~... ……~(-o ̄▽ ̄) ...
- C语言浮点数存储方式
对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用 32bit,double数据占用 64bit.其实不论是float类型还是double类型,在计算 ...
- MVC学习__修改工程端口号
有时候,我们会希望修改工程默认生成的端口号,方法如下:
- artDialog组件与iframe
背景 组件官网. 未用过的朋友可以先了解下. 当Content参数传递html元素时,官方的解释是: 备注:1.元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2.如果隐藏元素被传 ...
- 转载:C++ 多继承和虚继承的内存布局
C++ 多继承和虚继承的内存布局[已翻译100%] 英文原文:Memory Layout for Multiple and Virtual Inheritance 标签: <无> run_ ...