hdu 2222 Keywords Search (AC自动机-初步-很理解!)

AC自动机初步入门详解 前言 AC自动机(Aho-Corasick automaton)是KMP的升级版。KMP是单模匹配算法,处理在一个文本串中查找一个模式串的问题;AC自动机是多模匹配算法,能在一个文本串中同时查找多个不同的模式串。 多模块匹配问题:给定一个长度为n的文本S,以及k个平均长度为m的模式串P1,P2,…,Pn,要求搜索这些模式串出现的位置。 其实用KMP也能解决多模匹配问题,缺点是复杂度较高,需要对每个... 阅读详情

// 看北大课件学习 或者 去我百度空间有资料出处

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <queue>
#include <algorithm>
#define BUG cout << "here\n";
using namespace std;
#define kind 26
#define M 1000010

struct node {
    node* fail;
    node* next[kind];
    int tail;
    node() {
        fail = NULL;
        tail = 0;
        memset(next, 0, sizeof(next));
    }
};
char ch[M];
char word[M];
queue<node*> Q;
int n, m;
void Insert(node* root, char *str) {
    node* p = root;
    int i = 0, index;
    int len = strlen(str);
    for(i = 0; i < len; i++) {
        index = str[i] - 'a';
        if(p->next[index] == NULL) {
            p->next[index] = new node();
        }
        p = p->next[index];
    }
    p->tail++;
}
void BFS_AC(node*& root) { // 指针引用, 就是广搜模式建立失败指针, 核心 : 当前节点父节点失败指针的儿子
    Q.push(root);
    while(!Q.empty()) {
        node* p = NULL;
        node* t = Q.front();
        Q.pop();
        for(int i = 0; i < kind; i++) {
            if(t->next[i]) {
                p = t->fail;
                while(p) {
                    if(p->next[i]) {
                        t->next[i]->fail = p->next[i];
                        break;
                    }
                    p = p->fail;
                }
                if(!p) {
                    t->next[i]->fail = root;
                }
                Q.push(t->next[i]);
            }
        }
    }
}
void Query(node* root, char *str) {
    int i = 0, index, cnt = 0;
    node *p = root, *tmp;
    int len = strlen(str);

    for(i = 0; i < len; i++) {
        index = str[i] - 'a';
        while(!p->next[index] && p != root) {
            p = p->fail;
        }
        p = p->next[index];
        if(!p) p = root; // 标志了!
        tmp = p;
        while(tmp != root && tmp->tail != -1) {
              cnt += tmp->tail;
              tmp->tail = -1;
              tmp = tmp->fail;
        }
    }
    cout << cnt << endl;
}
int main() {
    int T;
    cin >> T;
    while(T--) {
        scanf("%d", &n);
        node* root = new node();
        for(int i = 0; i < n; i++) {
            scanf("%s", ch);
            Insert(root, ch);
        }
        BFS_AC(root);
        scanf("%s", word);
        Query(root, word);
    }
    return 0;
}


避坑指南:CentOS7.9安装Python3.8.16后yum报错的快速修复方法 本文详细解析了在CentOS7.9系统安装Python3.8.16后导致yum报错的原因,并提供了快速修复方法。通过修改yum配置文件指向Python2解释器,以及使用alternatives工具管理多版本Python,有效解决兼容性问题。同时推荐使用虚拟环境隔离开发环境,避免影响系统稳定性。 阅读详情

相关推荐

别再凭感觉估算!用ADS的EBOND库精确仿真Bonding线寄生电感(附完整参数设置指南)

本文详细介绍了在ADS中使用EBOND库精确仿真Bonding线寄生电感的方法,帮助射频工程师在毫米波频段实现高精度建模。通过三维物理参数和电磁场求解算法,EBOND模型能将误差控制在5%以内,显著提升电路性能。文章还提供了完整的参数设置指南和实战操作步骤,适用于5G毫米波前端模块等高频应用场景。

weixin_28730131的博客 506

HDU2222-Keywords Search AC自动机

HDU2222-Keywords Search AC自动机算法

P_rogrammer的专栏 742

西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序)

西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485) 西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序) 文章目录西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485)前言一、FreePort自由口通讯是什么?二、使用步骤1.模块参数定义2.定义FB功能块参数:3.程序代码如下(每天写代码100行,学不会你来找我):总结 前言 很长时间都没有更新了,主要是最近在学习罗克韦尔的STUDIO5000PLC编程软件,怎么说,和博

weixin_42940283的博客 1万+

hdu 2222 Keywords Search(AC自动机入门题)

昨晚开始想学AC自动机,然后尽早看了看算导的KMP。。。以前看过,忘差不多了。 今天看了看一个学习AC自动机的文章,磕磕绊绊理解了。 trie的建立很随意,关键是失败指针这个概念。稍微有点抽象。这个指针的建立,用到了BFS,引用那个文章的话 “  假设有一个节点k,他的失败

小媛在努力~ 2599

Linux之GTK系列教程

00、背上行囊1——程序员学习之道 01、背上行囊2——为什么要学习GTK 02、背上行囊3——GUI概述 03、背上行囊4——GTK简介 04、背上行囊5——GTK环境搭建( Linux ) 05、背上行囊6——GTK环境搭建( windows ) 06、踏上旅途1——一个简单的空白窗口 07、踏上旅途2——控件的添加 08、踏上旅途3——布局容器之水平布局 09、踏上旅途

每天积累一点点 2万+

02-基于ART-PI开发板创建USB CDC 虚拟串口设备

本例在ART-PI开发板上,基于RT-Thread 5.0,5虚拟了一个USB32 CDC串口设备。

arm_fan的专栏 1886

hdu 2222 Keywords Search (AC自动机)

视频地址  http://www.bilibili.com/video/av6295004/index_2.html 题目地址 http://acm.hdu.edu.cn/showproblem.php?pid=2222 简介地址 http://blog.youkuaiyun.com/niushuai666/article/details/7002823 AC自动机简介:  首

bushadid的博客 780

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

HDU 2222 Keywords Search【ACAM】

HDU 2222 Kerwords Search 代码风格模仿自:USETC每周算法讲解,AC自动机,郭老师! 输入一个T,对于每一个T给你一个n,接下来输入P个模式串,然后给你一个L串,L中出现了多少P中的串。 这是一道比较基础的AC自动机问题,我只不过是为了不想用板子而直接写,因此写此博文。 将容易遗漏或者写错的地方进行了注释的标注,用于提示自己,也用于与大家进行分享。 #include&lt...

Irish_Moonshine的博客 259

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 701

基于Simulink的MIMO-OFDM系统仿真建模示例

MIMO概述MIMO技术利用多个天线进行信号发送和接收,通过空间复用来提高数据传输速率,或通过空间分集来增强信号的可靠性。OFDM概述OFDM是一种将高速率数据流分成多个低速数据流并行传输的技术,每个子载波都采用调制方式(如BPSK、QPSK),并通过IFFT/FFT变换实现串并转换。MIMO-OFDM优势结合了MIMO的空间分集增益与OFDM对抗多径效应的能力,适用于宽带无线通信系统。提供了更高的数据速率和更好的频谱效率,是现代无线通信标准(如4G LTE、5G NR等)的核心技术之一。

xiaoheshang_123的博客 327

HDU2222 Keywords Search —— AC自动机

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 Keywords Search Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 65272...

alince20008的博客 168

作物生长模型Oryza V3实战1:为什么要研究它

ORYZAV3是水稻生长模拟模型ORYZA2000的最新升级版本(3.5版),作为作物生长模型,它通过数学方法和计算机技术模拟水稻生长发育过程及其与环境条件的相互作用。主要功能包括:模拟不同条件下的水稻生长和产量形成、评估环境胁迫影响、分析土壤碳氮动态以及进行区域尺度模拟。国内应用广泛,科研机构用于气候变化影响评估、灌溉模式比较等研究,并开展参数敏感性分析和应用培训。使用流程分为六个步骤:确定输入参数(气象、土壤、作物三类)、参数校准、设置模拟环境、运行模型、分析结果(输出50个参数)和计算产量(穗干重×收

504

HDU 2222 Keywords Search (AC自动机)

题面 输入样例 1 5 she he say shr her yasherhs 输出样例 3 题解 代码

qq_44791484的博客 231

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【HDU2222 Keywords Search】AC自动机 | Trie | fail链 | E

【HDU 2222】Keywords Search 听说有人叫自动AC机(

Keyu Tian's blog 298

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hdu2222 Keywords Search & AC自动机学习小结

传送门:http://http://acm.hdu.edu.cn/showproblem.php?pid=2222 思路:AC自动机入门题,直接上AC自动机即可。 对于构建AC自动机,我们要做的只有三件事: 1)构建字典树 2)构建失败指针 3)构建trie图(这道题好像不做这一步也能A。。。但是这一步不做是会被卡成O(n^2)的。。。) 1)第一步还是比较好理解的

thy的专栏 711

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU2222 Keywords Search AC自动机模板

HDU2222 Keywords Search 题面: In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retrieval system. Eve...

Hagtaril 317

AC自动机讲解+[HDU2222]Keywords Search(AC自动机)

首先,有这样一道题: 给你一个单词W和一个文章T,问W在T中出现了几次(原题见POJ3461)。 OK,so easy~ HASH or KMP 轻松解决。 那么还有一道例题: 给定n个长度不超过50的由小写英文字母组成的单词准备查询,以及一篇长为m的文章,问:文中出现了多少个待查询的单词(原题见POJ3630)。 OK,依然so easy~ 字典树(Trie)轻松解决。 那么,如...

weixin_33693070的博客 503

HDU 2222 Keywords Search(AC自动机模板题)

学习AC自动机请戳这里:大神blog........ 自动机的模板: #include #include #include #include #include #include #include #include #include #include #include #include //形如INT_MAX一类的 #define MAX 100005 #define IN

Paradiser 962

HDU2222 Keywords Search(AC自动机模板题)

Problem Description In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retrieval system. Every image have a long description, when users type some keywords to find

tomjobs的博客 481

HDU 2222 Keywords Search AC自动机

Problem Description In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retrieval system. Every image hav

I'm Growing 394

HDU - 2222 Keywords Search (基础AC自动机)

链接:HDU-2222 很久之前就准备学AC自动机了,今天就把最基础的搞定一下。 由于是最基础的AC自动机所以我先总结一下基础内容 ( qvq 最基础的AC自动机解决的是:多字符串匹配问题,我们知道kmp是优化 一对一的匹配。那么 N对一的匹配难道要用kmp跑 N次?答案是no. AC自动机全称:Aho-Corasick automaton , 既然有这个算法,那肯定对 这个问题...

164

HDU - 2222 Keywords Search(AC自动机)

题目链接:点击查看 题目大意:给出n个长度不超过50的模式串,再给出一个长度不超过1e6的主串,问模式串在主串中出现过多少次 题目分析:一开始我以为是求n次KMP,后来才知道这样做的时间复杂度是O(LM+N),L是模式串个数,M是主串长度,N是模式串总长度,如果是这样做必然会超时,于是就接触了AC自动机这个算法,是个注明的多模匹配算法,可以再O(M+N)的时间复杂度下完成上述任务 这里插个眼...

Falcon的博客 398

AC自动机讲解+[HDU2222]:Keywords Search(AC自动机)

首先,有这样一道题: 给你一个单词W和一个文章T,问W在T中出现了几次(原题见POJ3461)。 OK,so easy~ HASH or KMP 轻松解决。 那么还有一道例题: 给定n个长度不超过50的由小写英文字母组成的单词准备查询,以及一篇长为m的文章,问:文中出现了多少个待查询的单词(原题见POJ3630)。 OK,依然so easy~ 字典树(Trie)轻松解决。 那么,如...

weixin_34128237的博客 189

keywords search (hdu 2222 AC自动机模板题)

AC自动机模板题:keywords search 网上说AC自动机的前置技能需要学习字典树和KMP,可我的感觉和KMP关系不太大,和字典树的数据结构类型关系倒是有密切联系,一定是我太菜了,所以理解不是那么深刻 AC自动机的关键:失配指针的构造 fail指针的构造是由bfs()分层遍历完成的,首先我们先将第一层压入队列,第一层的fail[]:0节点,然后寻找下一层的失配指针,下一层的失配指针...

yangzijiangac的博客 217

【HDU 2222】Keywords Search AC自动机模板题

参考iwtwiioi的模板写出来的。上午gty讲的并没有听懂,只好自己慢慢对着模板理解。 在HDU上为什么相同的程序提交有时T有时A!!! 奉上sth神犇的模板(不是这道题): var ch:char; q,g,num:array [0..500001] of longint; st:string; son:array [0..500001,'a...

as2886089的博客 109
上一篇: hdu 1711 Number Sequence (KMP - 初步)
下一篇: 求回文子串O(n) manacher 算法
aclay
博客等级 码龄15年 37粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值