HDU2222-Keywords Search AC自动机

3D iToF深度分辨率测量 本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。 阅读详情

刚开始听AC自动机的时候,脑子里都是浆糊了。经过学长多次讲解,终于理解的差不多了。

HDU2222-Keywords Search:http://acm.hdu.edu.cn/showproblem.php?pid=2222

题意:先是输入一个T,代表有T组测试数据。每组数据以N开头,接下来有N个单词输入。最后再输入一段文章,文章只由小写字母组成。算出N个单词里面共有多少个在文章里出现过。注意单词是可以有重合部分的,如我输入a,ab,文章是abc,算有两个出现过。而且,重复出现的单词会被重复记录,如输入AA,AA,文章是AAB,还是算两个。

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
struct Trie{
	int Next[500010][26],Fail[500010],End[500010];//Next[now][buf[i]-'a']是now节点存着buf[i]字符的子节点的编号 
	int L,root;//注意这是全局变量,L是编号,root是根节点 
	int NewNode()//建立一个新的节点
	{
		for(int i=0;i<26;i++)//26叉树
			Next[L][i] = -1;
		End[L++] = 0;
		return L-1;//返回节点编号 L-1  
	}
	void Initial()
	{
		L = 0;
		root = NewNode();
	}
	void Insert(char buf[])
	{
		int len=strlen(buf);
		int now = root;
		for(int i=0;i<len;i++)
		{
			if(Next[now][buf[i]-'a'] == -1)
				Next[now][buf[i]-'a'] = NewNode();//若在子节点没有buf[i],则插入buf[i]
			now = Next[now][buf[i]-'a'];//now是当前节点编号 
		}
		End[now]++;//作为结束字符的编号加一,这也是为什么会重复计算同一个单词出现的次数
	} 
	void Build()//建立失败指针 
	{
		queue<int>ans;//用广搜,需要队列
		Fail[root] = root;//根节点的失败指针指向自己
		for(int i=0;i<26;i++)//情况一:父节点就是根节点的时候 
		{
			if(Next[root][i] == -1)
				Next[root][i]=root;
			else{
				Fail[Next[root][i]] = root;
				ans.push(Next[root][i]);
			} 
		}
		while(!ans.empty())//情况二:当其父节点不是根节点的时候 
		{
			int now = ans.front();
			ans.pop();
			for(int i=0;i<26;i++)
			{
				if(Next[now][i] == -1)
					Next[now][i] = Next[Fail[now]][i];//若buf[i]没有插入字典树,则将令其等于其父节点的失败指针指向的节点的buf[i]字符所在的节点(有点绕,多理解几遍就可以了)
				else{
					Fail[Next[now][i]] = Next[Fail[now]][i];//若已经插入,其失败指针就指向其父节点的失败指针指向的节点的子节点buf[i]所在的节点
					ans.push(Next[now][i]);//将其插入队列
				} 
			}
		}
	} 
	int Query(char buf[])//这里传入的是文章
	{
		int now = root;//总是从根节点开始,now初始化为root
		int res = 0;//结果
		int len = strlen(buf);
		for(int i = 0;i < len;i++)
		{
			now = Next[now][buf[i]-'a'];//当前节点的编号
			int temp = now;//中间变量
			while(temp != root)
			{
				res += End[temp];//只有找到单词最后一个字符所在的位置End[temp]才会是1,否则全为0,所以直接加
				End[temp] = 0;//加完后置为0
				temp = Fail[temp];//拓展到其失败指针指向的位置,继续查找
			}
		}
		return res;
	}
};
const int MAXN = 1000010;
int T,n;
char buf[MAXN];
Trie AC;
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		AC.Initial();
		for(int i = 0;i < n;i++)
		{
			scanf("%s",buf);
			AC.Insert(buf);
		}
		AC.Build();
		scanf("%s",buf);
		printf("%d\n",AC.Query(buf));
	}
	return 0;
}


康耐视visionpro-CogBlobTool工具详细说明 阅读详情

相关推荐

GBASE南大通用GBase 8s数据库-从零开始的手动安装与实例配置指南

本文详细介绍了GBASE南大通用GBase 8s数据库的手动安装与实例配置全过程,包括环境准备、用户创建、安装包准备、实例创建、环境变量配置等关键步骤。通过实战经验分享和常见问题解决方案,帮助用户快速掌握GBase 8s数据库的安装与配置技巧,确保数据库稳定运行。

weixin_29209825的博客 454

hdu 2222——Keywords Search

题意:给出几个字符串,在给出一个住传

char256 470

1.2 从“跟网”到“构网”:技术范式的历史性转变

新型电力系统面临"双高"特征带来的稳定性挑战,促使并网控制技术从"跟网型"向"构网型"范式转变。传统跟网型变流器作为受控电流源依赖强电网,存在短路电流能力有限、易失稳等缺陷;而构网型变流器模拟同步发电机特性,作为受控电压源具备自主建立电压/频率、提供虚拟惯性、增强短路容量和改善系统阻尼四大核心能力。这一技术范式转变使变流器从电网跟随者变为构建支撑者,成为解决新能源大规模接入稳定性的关键。

技术工作者 718

hdu2222及易错数据(AC自动机)

RT. #include #include using namespace std; const int kind=26; struct node{ node* fail; node* next[kind]; int count;//是否为该单词的最后一个节点 node(){ fail=NULL; count=0; memset(next,NULL,si

romantic_coding 628

CTFmisc-------Jack

每一个文件里面都有不一样的base64编码,我尝试将其解密,发现解出来的是乱码,所以我想到真正的flag藏在这些字符串中,所以我们要写代码把字符串提取出来。提取出来后,得到很多的base64的编码,要一个一个的解码很麻烦,猜到里面有flag字样的base64编码,所以我们将flag进行base64编码,1.下载得到Jack文件夹,里面有很多的txt文件。发现这个字符串是众多编码中唯一一个没有==然后从那些base编码中寻找Zmxh字段。

woshicainiao666的博客 1万+

SVM-支持向量机学习(1):线性可分SVM的基本型

1. foreword先看的是李航老师的书第7章,比较传统按照以下三节展开: 线性可分SVM 线性SVM 非线性SVM SMO算法 李航老师讲东西向来不拖泥带水,但本节也几乎用了40页的篇幅,足见涉及内容之多。7月底硬着头皮啃了下来,边看边在笔记上摘抄标注,花了2天时间对SVM有了基本认识。一个月过去了,如今重新整理为博客,再看轻松许多,并不断对比西瓜书的内容,启望达到融会贯通。西瓜书此节明显节奏轻

鸟恋旧林的博客 8679

HDU2222 AC自动机水题 (Trie图优化)

#include #include #include #include #include #define For(i,j,k) for (i=j;i<=k;i++) using namespace std; struct node{ int count,flag; bool r; struct node *next[26],*fa,*fail; node(){ co

Free Loop~~~跳动的恒星 597

从Transformer到蛋白质结构预测:手把手解读ESM系列模型的核心原理与实战价值

本文深入解析了ESM系列模型如何将Transformer架构创新应用于蛋白质结构预测,揭示了其从氨基酸序列到三维结构的高效预测机制。通过掩码语言模型预训练和注意力机制,ESM模型不仅捕捉蛋白质序列的远程相互作用,还在蛋白质工程改造、药物发现等领域展现出巨大实战价值,显著提升了结构预测速度和精度。

weixin_28744423的博客 318

HDU2222Keywords Search(AC自动机裸题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意:判断一个文章内包含多少个模式串(可能有重复)。 #include #include #include using namespace std; const int kind = 26; struct node { node *fail; node *next[k

Rain 621

【计算机视觉40例】案例08:石头剪刀布手势识别

计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。......

计算机视觉之光 2155

IoU的进化之路——IoU、GIoU、DIoU、CIoU四种损失函数总结

IoU、GIoU、DIoU、CIoU四种损失函数总结

chase 8129

hdu 2222 AC自动机(可做模板)

Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 50101    Accepted Submission(s): 16083 Problem Description In the moder

楠先生 7239

【2025CSPJ普及组】T4. 多边形

【2025CSPJ普及组】T4. 多边形【题目描述】小 R 喜欢玩小木棍。小 R 有 n 根小木棍,第i(1≤i≤n) 根小木棍的长度为 ai。

lybc2019的博客 849

C++——AC自动机例题——Keywords Search(HDU2222)

Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 58664    Accepted Submission(s): 19253 Problem Description In the

McDonnell_Douglas的博客 1112

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

AC自动机 模板 【HDU2222】 Keywords Search

AC自动机(Aho Corasick Automaton) 如果匹配字符串,一个模式串,一个匹配串,KMP就搞定了。 但是如果现在有多个模式串怎么办呢?每个模式串都处理一遍,再与匹配串匹配就太慢了,所以有了AC自动机,来解决这类问题。AC自动机可以看成是Trie树和KMP的结合体,具体的实现方式就是在每个节点处增添一个fail指针,作用与KMP中的失配时用的跳转数组差不多(虽然在匹配的大多数时候

Todobe 500

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【AC自动机】Hdu2222:Keywords Search

Hdu 2222:Keywords SearchDescriptionIn 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. Ev

puck_just_me的blog 705

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

HDU2222 Keywords Search + HDU2896病毒侵袭 AC自动机

虽然看明白了KMP和字典树,但是AC自动机还是没怎么理解QAQ... 附上讲解博客Orz:https://blog.youkuaiyun.com/qq_30346729/article/details/78835040                                https://www.cnblogs.com/cjyyb/p/7196308.html 1.HDU2222 Keyword...

A confused programmer 298

HDU2222 Keywords Search 【AC自动机】

HDU2222 Keywords Search 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 retri...

Dream_maker的博客 354

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

AC自动机 hdu2222 Keywords Search

传送门:点击打开链接 题意:给一个字典,再给一个查询串,问字典中的单词一共在这个查询串中出现了多少次。 思路:裸AC自动机。。第一次做,照着bin神代码写了个模板留着以后贴 #include #include #include #include #include #include #include #include #include #include #include #include #i

qwb的博客 852

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

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

小媛在努力~ 2599

hdu2222 Keywords Search ac自动机

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn=1e7+5; int cnt; struct node{ node *next[26]; node *fai

nankeyimeng的博客 1048

HDU 2222 Keywords Search【AC 自动机】

HDU 2222 Keywords Searchhttp://acm.hdu.edu.cn/showproblem.php?pid=2222大意:给出n个关键字,问在串str中出现了多少关键字。 如有5个关键字如下: 5shehesayshrher串str = "yasherhs" 那么当前str中包含3个关键字,分别为:"she","he","her"分析:AC 自动机 这里用...

a48634331的博客 141

hdu2222 Keywords Search【AC自动机】

题意: t组数据,每次给你n个模式串,和一个长串,请问这个长串里面包含几个模式串 n的范围为1e4,每个模式串的长度不超过50,长串的长度不超过1e6 题解: AC自动机入门,也是我第一次写AC自动机 学习博客 模板用的是kuangbin的模板 要点: fail数组初始化都为0,而我的trie的根节点也为0 套路总结: 先初始化空的自动机,插入每个模式串,建立字典树,对建立完的字典树跑一遍bfs建...

OOOak 173

HDU2222 Keywords Search AC自动机

网址:https://vjudge.net/problem/HDU-2222 题意: 统计模式串在文本串的出现次数,文本串只含有小写字母。 题解: $AC$自动机的模板题,在$Trie$树上建出$Trie$图,然后查询的时候跳$fail$指针直到已访问结点或者根结点记录数量,标记已访问结点即可。 AC代码: #include <cstring> #inclu...

FairyTail0423的专栏 250

HDU2222Keywords Search ac自动机

http://acm.hdu.edu.cn/showproblem.php?pid=2222 Problem Description In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring thi...

lanshan1111的博客 264
上一篇: 线段树维护区间的和和单点更新-HDU1166-敌兵布阵
下一篇: HDU2896-病毒侵袭 AC自动机
P_rogrammer
博客等级 码龄12年 0粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值