HDU 3065,模板(备忘录)

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
using namespace std;
#define M 2222222
char sx[][];
int n;
char s[M]; struct Trie{
int ch[M][],end[M],fail[M],cnt,root;
int b[M];
int Newnode(){
cnt++;
memset(ch[cnt],-,sizeof(ch[cnt]));
end[cnt]=-;
fail[cnt]=-;
return cnt;
}
void init(){
cnt=;
root=Newnode();
memset(b,,sizeof(b));
} void insert(char *s,int x){
int len=strlen(s),pos=root;
for (int i=;i<len;i++){
int v=s[i];
if (ch[pos][v]==-) ch[pos][v]=Newnode();
pos=ch[pos][v];
}
end[pos]=x;
} queue<int> Q;
void get_fail()
{
fail[root]=root;
for (int i=;i<;i++){
if (ch[root][i]==-) ch[root][i]=root;
else {
fail[ch[root][i]]=root;
Q.push(ch[root][i]);
}
}
while (!Q.empty()){
int pos=Q.front();
Q.pop();
for (int i=;i<;i++)
if (ch[pos][i]==-) ch[pos][i]=ch[fail[pos]][i];
else {
fail[ch[pos][i]]=ch[fail[pos]][i];
Q.push(ch[pos][i]);
}
}
}
void query(char *s1){
int len=strlen(s1),pos=root;
for (int i=;i<len;i++){
if (s1[i]<'A'||s1[i]>'Z') {pos=root;continue;}
int temp=ch[pos][s1[i]];
pos=temp;
while (temp!=root){
if (end[temp]!=-) b[end[temp]]++;
temp=fail[temp];
}
}
for (int i=;i<=n;i++)
if (b[i]) printf("%s: %d\n",sx[i],b[i]);
}
}AC; int main(){
while (scanf("%d",&n)!=EOF)
{
AC.init();
for (int i=;i<=n;i++) {
scanf("%s",sx[i]);
AC.insert(sx[i],i);
}
AC.get_fail();
scanf("%s",s);
AC.query(s);
}
return ;
}
 

AC 自动机在这里的更多相关文章

  1. 基于trie树做一个ac自动机

    基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...

  2. AC自动机-算法详解

    What's Aho-Corasick automaton? 一种多模式串匹配算法,该算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一. 简单的说,KMP用来在一篇文章中匹配一个模式串:但 ...

  3. python爬虫学习(11) —— 也写个AC自动机

    0. 写在前面 本文记录了一个AC自动机的诞生! 之前看过有人用C++写过AC自动机,也有用C#写的,还有一个用nodejs写的.. C# 逆袭--自制日刷千题的AC自动机攻克HDU OJ HDU 自 ...

  4. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  5. BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3198  Solved: 1532[Submit][Status ...

  6. BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]

    1212: [HNOI2004]L语言 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1367  Solved: 598[Submit][Status ...

  7. [AC自动机]【学习笔记】

    Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...

  8. AC自动机 HDU 3065

    大概就是裸的AC自动机了 #include<stdio.h> #include<algorithm> #include<string.h> #include< ...

  9. AC自动机 HDU 2896

    n个字串 m个母串 字串在母串中出现几次 #include<stdio.h> #include<algorithm> #include<string.h> #inc ...

  10. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

随机推荐

  1. Delphi For Android 开发笔记-附:如何Delphi中同时实现Windows、Android版的GetModuleFileName函数

    在Windows中开发DLL时,经常会需要获取当前DLL所在目录以便读取同目录下的其他文件,而目前Delphi在开发android时,其实没多大必要获取,因为整个工程只有一个so文件,而这个so文件也 ...

  2. python Django 学习笔记(六)—— 写一个简单blog做增删改练手

    简单效果图 1,创建一个项目myblog 可参考这里 myblog/ manage.py myblog/ __init__.py settings.py urls.py wsgi.py 2,创建blo ...

  3. ruby 笔记

    symbol 不能有- 'data-turbolinks-track' => true stop rails –s kill -INT $(cat tmp/pids/server.pid) cl ...

  4. 对云风 cstring 第二次解析

    前言 从明天起 关心粮食和蔬菜 我有一所房子 面朝大海 春暖花开 本文前提条件 1.了解 posix 线程 2.了解 原子操作 3.具备简单C基础,或者 你也敲一遍. 如果上面不太清楚,你可以翻看我以 ...

  5. C,C++回文字符串判断(字符串指针的用法)

    功能:输入一个字符串,判断是否为回文. 主要锻炼指针的用法. 1.C版 #include<stdio.h> int main() { ]; char a; ,flag=; while((a ...

  6. eth0: error fetching interface information: Device not found

    转载,原文出处:http://zh888.blog.51cto.com/1684752/775447 亲测有效,感谢作者!!! ----------------------------分割线----- ...

  7. 反射 reflect 初始学习

    类也是对象,本身是java.lang.Class 类的对象. Class的三种表示方式: 1.Class a = A.class: 类名.class的方式.经常在日志记录里面,获取当前类的日志记录生成 ...

  8. hdu 1412 {A} + {B}

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3282 {A} + {B} Description 给你两个集合,要求{A} + {B}.注:同一个集合 ...

  9. 如何从官网下载springframework和document

    spring官网 http://spring.io/ --->spring project--->点击github图标 --->artifactory --->进入到了http ...

  10. squid基础配置

    1 2 3 4 5 6 7 8 9 10 vim /etc/squid/squid.conf    http_port 192.168.1.12:3128 (可写多个) cache_mem 64MB  ...