AC自动机——Uva 11468 子串

题目链接:http://vjudge.net/contest/142513#problem/A

题意:给出一些字符和各自对应的选择概率,随机选择L次后将得到一个长度为L的随机字符串S.给出K个模版串,计算S不包含任何一个串的概率.

 

分析:

 在构造好的AC自动机里面,每随机生成一个字母,相当于在AC自动机中随机走一步。所有单词结点标记为禁止,本题就是从结点 0 走 l 步,不进入任何禁止结点的概率。

#include <bits/stdc++.h>
using namespace std;const int SIGMA_SIZE = 64;
const int MAXNODE = 500;int idx[256];
char s[30][30];
double prob[SIGMA_SIZE];
int n;struct AhoCorasickAutomata
{int ch[MAXNODE][SIGMA_SIZE];int f[MAXNODE];int match[MAXNODE];int sz;void init(){sz = 1;memset(ch[0],0,sizeof(ch[0]));}void insert(char *s){int u = 0,n = strlen(s);for(int i=0; i<n; i++){int c = idx[s[i]];if(!ch[u][c]){memset(ch[sz],0,sizeof(ch[sz]));match[sz] = 0;ch[u][c] = sz++;}u = ch[u][c];}match[u] = 1;}void getFail(){queue<int> q;f[0] = 0;for(int c=0; c<SIGMA_SIZE; c++){int u = ch[0][c];if(u){f[u] = 0;q.push(u);}}while(!q.empty()){int r = q.front();q.pop();for(int c=0; c<SIGMA_SIZE; c++){int u = ch[r][c];if(!u){ch[r][c]=ch[f[r]][c];continue;}q.push(u);int v = f[r];while(v&&!ch[v][c])v = f[v];f[u] = ch[v][c];match[u] |=match[f[u]];}}}
};AhoCorasickAutomata ac;double d[MAXNODE][105];
int vis[MAXNODE][105];double getProb(int u,int l)
{if(!l) return 1.0;if(vis[u][l]) return d[u][l];vis[u][l] = 1;double& ans = d[u][l];ans = 0.0;for(int i=0; i<n; i++){if(!ac.match[ac.ch[u][i]])ans += prob[i]*getProb(ac.ch[u][i],l-1);}return ans;
}int main()
{int T;scanf("%d",&T);for(int kase = 1; kase<=T; kase ++){int k,l;scanf("%d",&k);for(int i=0; i<k; i++)scanf("%s",s[i]);scanf("%d",&n);for(int i=0; i<n; i++){char ch[9];scanf("%s%lf",ch,&prob[i]);idx[ch[0]] = i;}ac.init();for(int i=0; i<k; i++)ac.insert(s[i]);ac.getFail();scanf("%d",&l);memset(vis,0,sizeof(vis));printf("Case #%d: %.6lf\n",kase,getProb(0,l));}return 0;
}

 

转载于:https://www.cnblogs.com/TreeDream/p/6087297.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓文本编辑器php cpp,开源的Android富文本编辑器

RichEditor基于原生EditTextspan实现的Android富文本编辑器github地址&#xff1a;https://github.com/yuruiyin/RichEditor组件描述该组件是基于原生EditTextspan的方式实现的&#xff0c;旨在提供一个功能齐全且使用方便的Android富文本编辑器。主要支持了加粗斜体等行内样式…

java identifier expected,java – hibernate h2 embeddable list expected“identifier”

我试图将一个功能列表(Embeddable)关联到我的Employee Entity中,而H2似乎对这个说它期望一个“标识符”不满意Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement ”CREATE TABLE EMPLOYEE_FUNCTIONS (EMPLOYEE_EMPLOYEEID VARCHAR(255) NOT NULL,ACTIVE…

建行信用卡问题

技巧&#xff1a;一般不要打400的&#xff0c;如果有其他的固话如&#xff1a;021-38690588后按语音提示5挂失&#xff0c;点5后让输入密码&#xff0c;继续往下听&#xff0c;会提示如果遗忘密码请选择6个星*转接人工服务&#xff0c;转接后直接说明挂失等操作即可。 打021开头…

学生信息管理系统的价值PHP,php技术对学生管理系统实现的价值研究

基于php技术的学生管理系统的设计要解决的主要问题就是通过设计切实可行的管理系统来解决学校对学生信息的管理、老师对学生信息的管理、学生对自己信息的核对等问题。本系统是利用netbeans作为前台开发工具、利用phpstusy开发环境开发的&#xff0c;数据库采用MySQL&#xff0…

【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误

原文&#xff1a;http://blog.csdn.net/chinazjn/article/details/7954984 ffmpeg移植到dm365上&#xff0c;遇到undefined reference错误&#xff1a; GA/gabin/lib/libavformat.a(allformats.o): In function av_register_all: /GA/ffmpeg-0.10/libavformat/allformats.c:53:…

php filespl,PHP SPL--遍历目录

1、PHP SPL标准库的用法(遍历目录,查找固定条件的文件)class RecursiveFileFilterIterator extends FilterIterator{// 满足条件的扩展名protected $ext array(jpg, gif);/*** 提供 $path 并生成对应的目录迭代器*/public function __construct($path){parent :: __construct(…

OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印

http://blog.csdn.net/fred_yang2013/article/details/10175921转载于:https://www.cnblogs.com/eustoma/p/6104995.html

php 查询键名是否存在,PHP array_key_exists():检测键名是否位于数组中

PHP array_key_exists() 函数用来检查给定键名(或者索引)是否存在于数组中&#xff0c;语法如下&#xff1a;bool array_key_exists ( mixed $key , array $arr )参数说明&#xff1a;key 表示键名&#xff1b;arr 表示要被检索的数组。返回值&#xff1a;如果键名 key 存在于数…

学习笔记:MySQL字符串类型

字符串类型 a) char和varchar 1.都需要指定字符的长度&#xff0c;char中的长度是字符的长度&#xff0c;而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度&#xff0c;而varchar指定的长度只是一个范围&#xff0c;所以varchar还要拿1-2个字节存储…

python gif 透明,Python3+试点批量处理简单的GIF到PNG并透明地去除背景色,python3Pillow,gif,转成,png,透明化,去掉...

1. 安装Pillow, 只用这个应该也可以&#xff0c;2. 安装 cImage下载后解压&#xff0c;拷贝image.py到你python安装目录的 Lib\site-packages 中。from PIL import Imageimport osimport imagedef get_imlist(path):"""返回目录中所有gif图像的文件名列表图像的…

Posix共享内存区

Posix提供了两种在无亲缘关系进程间共享内存区的方法&#xff1a; &#xff08;1&#xff09;内存映射文件&#xff1a;先有open函数打开&#xff0c;然后调用mmap函数把得到的描述符映射到当前进程地址空间中的一个文件&#xff08;上一篇笔记所用到的就是&#xff09;。 &…

matlab求半衰期,如何使用GLD和GDX价差来估计均值回归的半衰期

计算均值回归时间序列的半衰期我们可以通过例中GLD和GDX的均值回归差价来计算均值回归半衰期。MATLAB代码可以从epchan. com/book/example? _ 5. m获得。(这个程序的第一部分与example7 2. m.相同。)%在此播入example7_2. m%Insert example7 2. m in the beginning hereprevzb…

java占位符

String str"我是{0},我来自{1},今年{2}岁,{3}";String[] arr{"中国人","北京","22","谢谢"};Matcher mPattern.compile("\\{(\\d)\\}").matcher(str);while(m.find()){strstr.replace(m.group(),arr[Integer.pars…

oracle单表存储记录,oracle从各个表获得数据保存到另一个表

oracle从各个表取得数据保存到另一个表从各个表中取得数据保存另一个表中&#xff1a;CREATE VIEWPARAMETER_view ASWITHtall AS(SELECTp.PI_NO,--产品序列号p.SERIALNO,--产品编号p.PI_NAME,--产品名称p. PI_START_DATE,--产品起息日p.PI_END_DATE,--产品期日期p.PI_CUSTOMER_…

框架错误汇总

1.struts标签&#xff0c;在body中输入代码发现值栈不存在&#xff0c; 即<s:debug></s:debug>没有起作用 1 <body>2 3 4 测试url标签<br>5 <s:url value"index.jsp" var"surl"></s:url><br>6 <s:url value&…

初次进入oracle数据库,Oracle数据库的初次使用

oracle数据库的初次使用&#xff1a;oracle自带了用户 system /system管理员用户 scott/tiger用户初次使用&#xff1a;创建表空间(此处为使用默认的用户scott/tiger)在控制台&#xff1a;1.使用system/system用户登录语句&#xff1a;sqlplus system/system2.赋予用户权限&…

oracle+循环插入sql,SQL server,Oracle循环插入百万数据

SQL server&#xff0c;Oracle循环插入百万数据SQL server&#xff0c;Oracle循环插入百万数据压测时常需要往数据库插入大量数据&#xff0c;下面是我往两个数据库插入数据时用的脚本declare maxSum int,lid nvarchar(64), -- lid为表idcid int,userid nvarchar(64),oper_time…

jquery 通过submit()方法 提交表单示例

jquery 通过submit()方法 提交表单示例&#xff1a; 本示例&#xff1a;以用户注册作为例子。使用jquery中的submit()方法实现表单提交。 注&#xff1a;本示例仅提供了对表单的验证&#xff0c;本例只用选用了三个字段作为测试。 用户点击提交按钮时&#xff0c;触发点击事件&…

php background-image,css background-image属性怎么用

css background-image属性为元素设置背景图像&#xff0c;语法为&#xff1a;background-image:url(图片路径)。设置的背景图像会占据元素的全部尺寸&#xff0c;包括内边距和边框&#xff0c;但不包括外边距。css background-image属性怎么用&#xff1f;作用&#xff1a;为元…

webstorm

问题描述&#xff1a;webstorm打开文件夹&#xff0c;文件夹内的文件不能全部显示&#xff0c;如图 原因&#xff1a;配置文件xml出错 解决方法&#xff1a;删除文件夹内的idea文件&#xff0c;再用webstrom重新打开就行╮(╯▽╰)╭转载于:https://www.cnblogs.com/chenluomen…