麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

【hdu3689】 Infinite monkey theorem

2019-11-14 09:48:13
字體:
來源:轉載
供稿:網友

題意 字符集中有一些字符(最多26個),給出每個字符的出現概率(它們的和保證為1) 再給出一個子串B,長為M 求:任給一個長度為N的字符串A(只能包含字符集中的字符),使得B是A的子串的概率。 N<=100

解法 DP 想象一邊隨機生成字符串A,一邊用KMP匹配字符串B的過程 f[i][j]表示隨機生成到第i位,此時B串匹配到第j位的概率 枚舉下一位生成字符c,設其生成概率為gc 假設下一位填c,計算出KMP匹配指針j應該移動到j‘ f[i+1][j’] += f[i][j]*gc 已經匹配到第m位的狀態不再進行轉移 ans = ∑f[i][m]

一道比較簡單的概率DP結合了KMP非常的巧妙。

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;double f[1010][30],ll,gl[30];int nxt[30],n,m,l;char w[30],ch,c[30];void calc_w(){ nxt[1]=0; l=strlen(w+1); int j=0; for (int i=2;i<=l;i++) { while (j&&w[i]!=w[j+1])j=nxt[j]; if (w[j+1]==w[i])j++; nxt[i]=j; }}int main(){ while(1) { memset(f,0,sizeof(f)); f[0][0]=1; scanf("%d%d/n",&n,&m); if (!n&&!m)break; for (int i=1;i<=n;i++) scanf("%c %lf/n",&c[i],&gl[i]); scanf("%s",w+1); calc_w(); for (int i=0;i<m;i++) { for (int j=0;j<l;j++) { for (int k=1;k<=n;k++) { int po=j; while (po&&w[po+1]!=c[k])po=nxt[po]; if (w[po+1]==c[k])po++; f[i+1][po]+=f[i][j]*gl[k]; } } } double ans=0; for (int i=0;i<=m;i++) ans+=f[i][l];
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品偷拍久久 | 特级毛片a级毛片100免费 | 国产一区精品在线观看 | 三级国产三级在线 | 毛片福利| 国产在线一区二区三区 | 日韩精品中文字幕在线观看 | 久久久久久久久成人 | 一级@片| 国产二区三区在线播放 | av国产免费 | 人人舔人人插 | 国产91丝袜在线播放 | 伊久在线 | 在线成人一区二区 | 国产一级一国产一级毛片 | 久久久久久久一区二区三区 | bt 自拍 另类 综合 欧美 | h色网站在线观看 | 国产成人精品一区二区仙踪林 | 午夜偷拍视频 | 国产91对白叫床清晰播放 | 天天都色视频 | 女人久久久www免费人成看片 | 一区二区三级视频 | 狠狠操天天射 | 国产一区网址 | 一区二区国产在线 | 亚洲网站在线观看视频 | 午夜视频在线免费播放 | 精品1 | 91成人在线网站 | 一级成人欧美一区在线观看 | 国产在线免费 | 久久久资源网 | 亚洲精品成人久久久 | 久久久tv | 亚洲资源在线播放 | 在线a毛片免费视频观看 | 一级视频片 | 国产成人强伦免费视频网站 |