luogu P3808 【模板】AC自动机(简单版)
二次联通门 : luogu P3808 【模板】AC自动机(简单版)
/*luogu P3808 【模板】AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就做做板子题了。。*/ #include <iostream> #include <cstring> #include <cstdio> #include <queue>#define Max 1000009void read (int &now) {register char word = getchar ();for (now = 0; !isdigit (word); word = getchar ());for (; isdigit (word); now = now * 10 + word - '0', word = getchar ()); }struct Trie_Data {Trie_Data *child[26];Trie_Data *Fail;int Count;Trie_Data (){for (int i = 0; i < 26; i ++)this->child[i] = NULL;Fail = NULL;Count = 0;} };Trie_Data *Root; std :: queue <Trie_Data *>Queue;class AC_Type {public :void Insert (char *key){Trie_Data *now = Root;Trie_Data *pos;int Id;int Len = strlen (key);for (int i = 0; i < Len; i ++){Id = key[i] - 'a';if (now->child[Id] == NULL)now->child[Id] = new Trie_Data; now = now->child[Id];}now->Count ++;}void AC_Build (){Queue.push (Root); Trie_Data *now;Trie_Data *pos;while (!Queue.empty ()){pos = NULL;now = *&Queue.front ();Queue.pop ();for (int i = 0; i < 26; i ++){if (now->child[i] == NULL)continue;if (now == Root)now->child[i]->Fail = Root;else{pos = now->Fail;for (; pos; pos = pos->Fail)if (pos->child[i] != NULL){now->child[i]->Fail = pos->child[i];break;}if (pos == NULL)now->child[i]->Fail = Root;}Queue.push (now->child[i]); } }}int Query (char *key){int Answer = 0;int Len = strlen (key);int Id;Trie_Data *now = Root;for (int i = 0; i < Len; i ++){Id = key[i] - 'a';while (now->child[Id] == NULL && now != Root)now = now->Fail;now = now->child[Id];if (now == NULL)now = Root;Trie_Data *pos = now;for (; pos != Root && pos->Count >= 0; pos = pos->Fail){Answer += pos->Count;pos->Count = -1;}}return Answer;} };AC_Type Make;char line[Max];int main (int argc, char *argv[]) {int T, N;Root = new Trie_Data;for (read (N); N --; ){scanf ("%s", line);Make.Insert (line); }Make.AC_Build (); scanf ("%s", line);printf ("%d\n", Make.Query (line)); return 0; }
转载于:https://www.cnblogs.com/ZlycerQan/p/7341480.html
luogu P3808 【模板】AC自动机(简单版)相关推荐
- 【AC自动机】单词(luogu 3966/ybtoj AC自动机-2)
正题 luogu 3966 ybtoj AC自动机-2 题目大意 给你n个单词,让你查询这写单词分别在这n个单词中出现过多少次 解题思路 先用AC自动机建好图,然后每个点的权值为1,然后向nx传递 代 ...
- P3808,P3796-[模板]AC自动机(简单版/加强版)
简单版 题目链接: https://www.luogu.org/problem/P3808 题目大意 nnn个模式串,一个文本串,求有多少个模式串出现在文本串里. 解题思路 普通ACACAC自动机不解 ...
- 模板 - AC自动机
ACM-ICPC模板 目录 求有多少个模式串在文本串里出现过 建fail树dfs求每个模式串在文本串中的出现次数 ac自动机fail树上dfs序建可持久化线段树 AC自动机是一种多模匹配算法 AC自动 ...
- POJ 1625 Censored!(AC自动机-指针版+DP+大数)题解
题目:给你n个字母,p个模式串,要你写一个长度为m的串,要求这个串不能包含模式串,问你这样的串最多能写几个 思路:dp+AC自动机应该能看出来,万万没想到这题还要加大数...orz 状态转移方程dp[ ...
- HDU 2222 ACAM模板(AC自动机)
这里找到了两篇很nice的Trie树(作者Hackbuteer1)以及AC自动机(作者niushuai666)入门详解.博主写的可以说是非常用心了,一看就懂. 题意:给出N(<=10000)个单 ...
- AC自动机模板(【CJOJ1435】)
题面 Description 对,这就是裸的AC自动机. 要求:在规定时间内统计出模版字符串在文本中出现的次数. Input 第一行:模版字符串的个数N. 第2->N+1行:N个字符串.(每个模 ...
- ac自动机 匹配最长前缀_AC自动机算法
AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一.一个常见的例子就是给出n个单词,再给出一段包 ...
- 提高篇 第二部分 字符串算法 第4章 AC自动机
https://blog.csdn.net/wangyh1008/article/details/81428056 [模板]AC自动机(加强版) 洛谷3796 AC自动机_A_loud_name-CS ...
- [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
前言 做过杭电.浙大或是北大等ACM题库的人一定对"刷题"不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到"Onl ...
最新文章
- 【 MATLAB 】Fourier Transforms ( fft )
- 地球自转减速影响世界时 格林尼治时间或成历史
- WSUS注冊表導入,工作組用戶系統更新
- Numpy 中 mean() 和 average() 的区别?(average可计算加权平均)
- 【C++提高班】c++数组遍历比较相邻的数值
- 对《构建之法》的一点认识
- 【软件】我安装Tomcat5.5(Java Web开发服务器)的几点经验
- 会话跟踪技术之HttpSession
- centos下升级g++版本
- python与数据库完整项目_python入门:操作数据库项目实例分享
- AVL平衡树的插入例程
- 计算机科学已发展成为一门,计算机前沿技术论文
- 服务器重装系统网站打不开怎么办,网页打不开,小编教你网页打不开怎么办
- html =拼接dom,在js代码拼接dom对象到页面上去的模板总结(必看)
- 天翼校园客户端“中毒”,江苏、广东、湖南成重灾区
- http://www.codeproject.com/Articles/11596/XPTable-NET-ListView-meets-Java-s-JTable
- 增霸卡出现问题 保护解不开
- 数值计算与计算机应用实例,数值计算的若干应用实例求解4_8.doc
- 修改并完善框架协议、合同的类型、有效期及目标值等
- chrome浏览器上传文件延迟_谷歌Chrome上传文件未响应的解决办法
热门文章
- PHP与base64
- 《Pro Android Graphics》读书笔记之第二节
- 微信小程序开发(1)
- vimrc for windows
- Programming Pearls Essay 01
- 计算机网络技术与应用教程期末考试,2011大学计算机网络技术与应用教程客观题期末复习(含判断题,属于公共课程,使用)...
- 一句话说清楚NodeJS中module.exports和exports的区别
- ssh中linux 变颜色,linux – 如何通过SSH在Vim中启用颜色?
- mongodb消息服务器,win10 MongoDB 3.6 服务端配置
- java上课笔记大全_JAVA基础知识上课笔记