【Aho-Corasick automation 大米饼模板】
自动机要打熟。自动机要打好。自动机要打得美妙。
【例子:HDU2222】
#include<stdio.h>
#include<queue>
#include<cstring>
#define go(i,a,b) for(int i=a;i<=b;i++)
using namespace std;const int N=;
int f[N],last[N],ch[N][],sz,ans,val[N];
void Insert(char *s){
int n=strlen(s+),u=;go(i,,n){int c=s[i]-'a';if(!ch[u][c])
{val[ch[u][c]=++sz]=;go(j,,)ch[sz][j]=;}u=ch[u][c];}val[u]++;
}
void Fail(){
queue<int>q;go(c,,){int u=ch[][c];if(!u)continue;last[u]=f[u]=;q.push(u);}
while(!q.empty()){int r=q.front();q.pop();go(c,,){
int u=ch[r][c];if(!u){ch[r][c]=ch[f[r]][c];continue;}
q.push(u);f[u]=ch[f[r]][c];last[u]=val[f[u]]?f[u]:last[f[u]];}}
}
void Find(char *s){
int n=strlen(s+),v=;go(i,,n){
int c=s[i]-'a';if(v&&!ch[v][c])v=f[v];
int t=v=ch[v][c];while(t){ans+=val[t];val[t]=;t=last[t];}}
}
int main(){char s[N];int T,n;scanf("%d",&T);while(T--&&scanf("%d",&n)){
sz=ans=;go(i,,)ch[][i]=;
go(i,,n)scanf("%s",s+),Insert(s);
Fail();scanf("%s",s+);Find(s);printf("%d\n",ans);
}return ;}//Paul_Guderian
我不知道我能够执着多深,虽然我只是钢铁里的丝绒;
不因一场宿命而忘却初衷,不因一世坎坷而残喘苟活。——————汪峰《流年啊 你奈我何》
【Aho-Corasick automation 大米饼模板】的更多相关文章
- 【小小复习·大米饼】
(一)数位DP模板 ·LIS的数位DP: ·含b进制数个数+数形结合的数位DP ·平衡数的数位DP: (二)网络流问题 ·Edmonds_Karp:(见书)·Dinic(见书)·ISAP(见书)·例题 ...
- Aho - Corasick string matching algorithm
Aho - Corasick string matching algorithm 俗称:多模式匹配算法,它是对 Knuth - Morris - pratt algorithm (单模式匹配算法) 形 ...
- 多模字符串匹配算法-Aho–Corasick
背景 在做实际工作中,最简单也最常用的一种自然语言处理方法就是关键词匹配,例如我们要对n条文本进行过滤,那本身是一个过滤词表的,通常进行过滤的代码如下 for (String document : d ...
- Trie implementation
在学习 Aho - Corasick Automation Algorithm 之前,先学习一下,Trie 的实现过程: The name trie comes from its use for re ...
- 【吃炸弹的鸽子UVA10765-双联通模板】
·从前有一个鸽子Lence,它吃了一个炸弹,然后有人出了这道题. ·英文题,述大意: 给出一张连通无向图,求出:对于每个点,删去这个点(以及它相连的边以后)时,当前图中的连通块数量,这个 ...
- 算法 - DNA搜索 - Ako Corasick
场景:从很长的字符串(输入字符串.DNA)中搜索大量固定字符串(字典.基因) 题目:Determining DNA Health | HackerRank 算法:Aho–Corasick algori ...
- AC 自动机
AC自动机(Aho-Corasick Automata)是经典的多模式匹配算法.从前我学过这个算法,但理解的不深刻,现在已经十分不明了了.现在发觉自己对大部分算法的掌握都有问题,决定重写一系列博客把学 ...
- 【POJ 1459 power network】
不可以理解的是,测评站上的0ms是怎么搞出来的. 这一题在建立超级源点和超级汇点后就变得温和可爱了.其实它本身就温和可爱.对比了能够找到的题解: (1)艾德蒙·卡普算法(2)迪尼克算法(3)改进版艾德 ...
- 斜率优化dp 的简单入门
不想写什么详细的讲解了...而且也觉得自己很难写过某大佬(大米饼),于是建议把他的 blog 先看一遍,然后自己加了几道题目以及解析...顺便建议看看算法竞赛(蓝皮书)的 0x5A 斜率优化(P294 ...
随机推荐
- 201421123042 《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 答: 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户 ...
- 数据恢复培训资料:BMP文件详解
BMP是一种与硬件设备无关的图像文件格式,使用非常广.它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8 ...
- OpenShift实战(一):OpenShift高级安装
1.1 服务器基本信息 本次安装采用一个master.5个node.3个etcd,node节点两块硬盘,60G磁盘用于docker storage,xxx改为自己的域名或主机名. 节点 功能 IP 内 ...
- 一张图说明 Web Api 参数绑定默认规则
请求如下: 控制器如下: 慎重说明:不管请求方式是 get 还是 post , 简单类型的参数,如 name 和 id ,其值都是从 url 里面去取. Web API 从 url 还是 body 获 ...
- BizTalk 2016 配置 RosettaNet遇到的坑
本文只针对已经安装好BizTalk 2016 需要在安装RosettaNet加速器的伙伴. IIS配置 权限问题 错误信息 Failed to get IIS metabase property. E ...
- Nginx原理和配置总结
一:前言 Nginx是一款优秀的HTTP服务器和反向代理服务器,除却网上说的效率高之类的优点,个人的切身体会是Nginx配置确实简单而且还好理解,和redis差不多,比rabbitmq好理解太多了: ...
- maven入门(7)maven项目(组件)的坐标
1.为什么要定义Maven坐标 在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的.在这个基础上,其他Maven项目才能应用该项目生成的构件. 2.Maven坐 ...
- mysql导出与导入
环境 centos6.5 32位 Mysql 5.7.19 导出 mysqldump用法 导出整个数据库 [root@mini2 mysql]# mysqldump -p123456 --databa ...
- Win10系统Python虚拟环境安装
1.安装virtualenv 若要使用python虚拟环境进行开发,首先需要安装virtualenv. 命令:pip install virtualenv 2.安装虚拟环境 命令:virtualenv ...
- Hive:表1inner join表2结果group by优化
问题背景 最近遇到一个比较棘手的事情:hive sql优化: lib表(id,h,soj,noj,sp,np) --一个字典表 mitem表(md,mt,soj,noj,sp,np)- ...