bzoj1444: [Jsoi2009]有趣的游戏
2017-04-30 21:00
295 查看
传送门
首先得到AC自动机。
然后得到转移矩阵。
我们可以将矩阵自乘50次,假装他是对的。
然后就这样被水过去了
首先得到AC自动机。
然后得到转移矩阵。
我们可以将矩阵自乘50次,假装他是对的。
然后就这样被水过去了
#include<cstdio> #include<cstdlib> #include<iostream> #include<cmath> #include<cstring> #include<algorithm> #define N 505 using namespace std; struct matrix{ double p ; matrix(){ memset(p,0,sizeof(p)); } }a; int n,l,m,cnt,id,x,y; int fail ,end ,pos ,q ,ch [27]; double p ; char s ; void insert(){ int x=0; for (int i=1;i<=l;i++){ if (!ch[x][s[i]-'A']) ch[x][s[i]-'A']=++cnt; x=ch[x][s[i]-'A']; } end[x]=1; pos[++id]=x; } void build(){ int h=0,t=0; for (int i=0;i<m;i++) if (ch[0][i]) q[++t]=ch[0][i]; while (h<t){ int x=q[++h]; end[x]|=end[fail[x]]; for (int i=0;i<m;i++) if (!ch[x][i]) ch[x][i]=ch[fail[x]][i]; else{ fail[ch[x][i]]=ch[fail[x]][i]; q[++t]=ch[x][i]; } } } void get(){ for (int i=0;i<=cnt;i++) if (end[i]) a.p[i][i]=1; else for (int j=0;j<m;j++) a.p[i][ch[i][j]]+=p[j]; } inline matrix operator *(matrix &x,matrix &y){ matrix z; for (int i=0;i<=cnt;i++) for (int j=0;j<=cnt;j++) for (int k=0;k<=cnt;k++) z.p[i][j]+=x.p[i][k]*y.p[k][j]; return z; } int main(){ scanf("%d%d%d",&n,&l,&m); for (int i=0;i<m;i++){ scanf("%d%d",&x,&y); p[i]=(double)x/y; } for (int i=1;i<=n;i++){ scanf("%s",s+1); insert(); } build(); get(); for (int i=1;i<=50;i++) a=a*a; for (int i=1;i<=n;i++) printf("%.2lf\n",a.p[0][pos[i]]); }
相关文章推荐
- BZOJ1444: [Jsoi2009]有趣的游戏 矩阵求逆+AC自动机
- BZOJ 1444 JSOI2009 有趣的游戏 AC自动机+矩阵乘法
- bzoj1444 [Jsoi2009]有趣的游戏(ACAM+矩阵+概率dp)
- BZOJ 1444 [Jsoi2009] 有趣的游戏
- BZOJ 1444 [Jsoi2009]有趣的游戏 (AC自动机 + 概率DP + Gauss)
- 【bzoj1444】[Jsoi2009]有趣的游戏
- BZOJ:4820: [Sdoi2017]硬币游戏&&BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
- Bzoj1444 [Jsoi2009]有趣的游戏
- 【BZOJ1444】[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法
- bzoj1444 [Jsoi2009]有趣的游戏(期望概率+AC自动机+高斯消元)
- BZOJ 1444: [Jsoi2009]有趣的游戏 AC自动机加矩阵快速幂
- [AC自动机 概率DP 矩阵乘法||高斯消元] BZOJ 1444 [Jsoi2009]有趣的游戏
- BZOJ1444:[Jsoi2009]有趣的游戏 (AC自动机+概率DP+高斯消元)
- bzoj1444 [Jsoi2009]有趣的游戏
- BZOJ 1444: [Jsoi2009]有趣的游戏
- BZOJ 1444: [Jsoi2009]有趣的游戏
- 【bzoj1444】【jsoi2009】【有趣的游戏】【AC自动机+矩阵乘法】
- 【bzoj1444】[Jsoi2009]有趣的游戏 AC自动机+矩阵乘法
- bzoj 1444: [Jsoi2009]有趣的游戏【AC自动机+dp+高斯消元】
- ●BZOJ 1444 [Jsoi2009]有趣的游戏