自动机要打熟。自动机要打好。自动机要打得美妙。

【例子: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 大米饼模板】的更多相关文章

  1. 【小小复习·大米饼】

    (一)数位DP模板 ·LIS的数位DP: ·含b进制数个数+数形结合的数位DP ·平衡数的数位DP: (二)网络流问题 ·Edmonds_Karp:(见书)·Dinic(见书)·ISAP(见书)·例题 ...

  2. Aho - Corasick string matching algorithm

    Aho - Corasick string matching algorithm 俗称:多模式匹配算法,它是对 Knuth - Morris - pratt algorithm (单模式匹配算法) 形 ...

  3. 多模字符串匹配算法-Aho–Corasick

    背景 在做实际工作中,最简单也最常用的一种自然语言处理方法就是关键词匹配,例如我们要对n条文本进行过滤,那本身是一个过滤词表的,通常进行过滤的代码如下 for (String document : d ...

  4. Trie implementation

    在学习 Aho - Corasick Automation Algorithm 之前,先学习一下,Trie 的实现过程: The name trie comes from its use for re ...

  5. 【吃炸弹的鸽子UVA10765-双联通模板】

    ·从前有一个鸽子Lence,它吃了一个炸弹,然后有人出了这道题. ·英文题,述大意:        给出一张连通无向图,求出:对于每个点,删去这个点(以及它相连的边以后)时,当前图中的连通块数量,这个 ...

  6. 算法 - DNA搜索 - Ako Corasick

    场景:从很长的字符串(输入字符串.DNA)中搜索大量固定字符串(字典.基因) 题目:Determining DNA Health | HackerRank 算法:Aho–Corasick algori ...

  7. AC 自动机

    AC自动机(Aho-Corasick Automata)是经典的多模式匹配算法.从前我学过这个算法,但理解的不深刻,现在已经十分不明了了.现在发觉自己对大部分算法的掌握都有问题,决定重写一系列博客把学 ...

  8. 【POJ 1459 power network】

    不可以理解的是,测评站上的0ms是怎么搞出来的. 这一题在建立超级源点和超级汇点后就变得温和可爱了.其实它本身就温和可爱.对比了能够找到的题解: (1)艾德蒙·卡普算法(2)迪尼克算法(3)改进版艾德 ...

  9. 斜率优化dp 的简单入门

    不想写什么详细的讲解了...而且也觉得自己很难写过某大佬(大米饼),于是建议把他的 blog 先看一遍,然后自己加了几道题目以及解析...顺便建议看看算法竞赛(蓝皮书)的 0x5A 斜率优化(P294 ...

随机推荐

  1. zookeeper 启动失败 BindException: Address already in use 或者Error contacting service. It is probably not running

    平台:centos-6.3-i386 jdk-7u51 storm 0.9.1 python 2.6.6   hadoop 1.2.1 今天上午装storm的时候遇到这个问题,好郁闷.把网上介绍的方法 ...

  2. 【iOS】swift-文字宽度的计算

    如图所示,需要sectionView的标题宽度可以动态变化 举例说明: 只需在tableView的代理方法 func tableView(tableView: UITableView, viewFor ...

  3. bzoj千题计划251:bzoj3672: [Noi2014]购票

    http://www.lydsy.com/JudgeOnline/problem.php?id=3672 法一:线段树维护可持久化单调队列维护凸包 斜率优化DP 设dp[i] 表示i号点到根节点的最少 ...

  4. RAID6三块硬盘离线导致的数据丢失恢复过程

    小编我最近参与了一例非常成功的数据恢复的案例,在这里分享给大家.用户是一组6块750G磁盘的 RAID6,先后有两块磁盘离线,但维护人员在此情况下依然没有更换磁盘,所以在第三块硬盘离线后raid直接崩 ...

  5. ubuntu启动报/root/.profile mesg:ttyname failed错误的解决办法

    修改/root/.profile文件,如下命令 sudo gedit /root/profile 将文中的最后一行mesg n修改成tty -s && mesg n

  6. nodejs 全局变量

    1.全局对象 所有模块都可以调用 1)global:表示Node所在的全局环境,类似于浏览器中的window对象. 2)process:指向Node内置的process模块,允许开发者与当前进程互动. ...

  7. WPF 自定义滚动条(ScrollView、ScrollBar)样式

    一.滚动条基本样式 本次修改Scrollview及ScrollBar滚动条样式是通过纯样式实现的.修改的内容包含滚动条的颜色,上下按钮的隐藏.另外添加了鼠标经过滚动条动画. style样式如下: &l ...

  8. spring MVC框架入门(外加SSM整合)

    spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...

  9. 新概念英语(1-109)A Good Idea

    Lesson 109 A good idea 好主意 Listen to the tape then answer this question. What does Jane have with he ...

  10. hadoop原理

    MapReduce工作原理图文详解 前言:   前段时间我们云计算团队一起学习了hadoop相关的知识,大家都积极地做了.学了很多东西,收获颇丰.可是开学后,大家都忙各自的事情,云计算方面的动静都不太 ...