国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

【hdu3689】 Infinite monkey theorem

2019-11-14 09:20:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

一道比較簡(jiǎn)單的概率DP結(jié)合了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];
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南昌县| 利川市| 武宣县| 迭部县| 通辽市| 长白| 南涧| 罗定市| 永善县| 上犹县| 巴东县| 得荣县| 广灵县| 简阳市| 财经| 利辛县| 安溪县| 从化市| 冕宁县| 嘉义县| 吉林省| 娄烦县| 栾城县| 琼中| 武威市| 屯门区| 扶绥县| 陵川县| 宜阳县| 仁化县| 都兰县| 阳城县| 连州市| 隆化县| 滨州市| 普兰县| 榕江县| 揭东县| 张家口市| 新巴尔虎左旗| 海丰县|