博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 11468 Substring
阅读量:6157 次
发布时间:2019-06-21

本文共 1591 字,大约阅读时间需要 5 分钟。

 

给出一些字符和各自对应的选择概率,随机选择L次后得到一个长度为L的随机字符串S。

给出K个模板串,计算S不包含任何一个模板串的概率

 

dp[i][j]表示现在在AC自动机的i号点,还需要走j步的概率

dp[i][j]=Σdp[k][j-1] ,k不是单词节点

 

注意:

1、模板串可能是模板串的后缀,所以这题要用AC自动机,而不是Trie

2、在构造失配指针时,如果边不存在,要补上,边(不是失配指针)指向父节点的失配指针的子节点

 

#include
#include
#include
#include
using namespace std;char s[21];int len,tot,trie[21*21][63];bool mark[21*21],v[21*21][21*21];double p[21*21],dp[21*21][21*21];char ch[21*21];int f[21*21];int n;queue
q;int get(char c){ if(c>='0'&&c<='9') return c-'0'; if(c>='a'&&c<='z') return c-'a'+10; return c-'A'+36;}void insert(){ len=strlen(s); int root=1,id; for(int i=0;i
>ch[i]; scanf("%lf",&p[i]); } int L; scanf("%d",&L); printf("Case #%d: %.6lf\n",t,dpp(1,L)); }}

 

 

另一种构造失配指针的写法

2个地方不一样

1、AC自动机从0开始,上面0作为虚拟节点

2、0不能直接入队,枚举0节点的孩子,让孩子入队

    因为0的失配指针是0

f[trie[now][i]]=trie[j][i]=trie[0][i]=本节点  导致失配指针指向自己 上面让1入队,1的失配指针是0

   

void getfail(){    memset(f,0,sizeof(f));    for(int i=0;i<63;i++)       if(trie[0][i]) q.push(trie[0][i]);    int now,j;    while(!q.empty())    {        now=q.front(); q.pop();         for(int i=0;i<63;i++)        {            if(!trie[now][i])             {                trie[now][i]=trie[f[now]][i];                continue;            }            q.push(trie[now][i]);            j=f[now];            //while(!trie[j][i]) j=f[j];            f[trie[now][i]]=trie[j][i];            if(mark[trie[j][i]]) mark[trie[now][i]]=true;        }    }}

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6961632.html

你可能感兴趣的文章
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>