HDU 2222 AC自动机

AC自动机模板+例题(HDU2896+HDU3065+HDU2222) 病毒侵袭中(HDU2896) #include<map> #include<cmath> #include<queue> #include<vector> #include<cstdio> #include<string> #include<cstdlib> #include<cstring> ... 阅读详情
/****************************************************************************************************
    HDU最2的题目~AC自动机模板,根据Racebug的模板改的,结果改了下140ms过的~YM Racebug~
****************************************************************************************************/
#include <iostream>
#include <functional>
#include <algorithm>
//#include <hash_map>		//Visual C++ lib
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;

#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define LEN(s) static_cast<int>( strlen((s)) )

typedef long long LL;		//GNU C++
typedef unsigned long long ULL;
//typedef __int64 LL;		//Visual C++ 2010
//typedef unsigned __int64 ULL;
typedef double LF;

typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;

//typedef hash_map<int, int>::iterator HMI;
typedef map<int, int>::iterator MI;
typedef vector<int>::iterator VI;
typedef list<int>::iterator LI;
typedef set<int>::iterator SI;

const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL;		//15f
const double oo = 10e9;
const double eps = 10e-9;
const double PI = acos(-1.0);

const int MAXN = 500004;
const int MAXC = 26;

int test, n;
char str[MAXN * 2];

struct Node
{
	Node *next[MAXC];
	Node *fail;
	int cnt;
}trie[MAXN], *root;
int ncnt;
queue<Node *>Q;

void initTrie()
{
	root = trie;
	ncnt = 1;
	for (int i = 0; i < MAXC; ++i)
	{
		root->next[i] = NULL;
	}
	root->fail = NULL;
	root->cnt = 0;
	return ;
}
Node* createNode(Node *crt)
{
	for (int i = 0; i < MAXC; ++i)
	{
		crt->next[i] = NULL;
	}
	crt->fail = NULL;
	crt->cnt = 0;
	return crt;
}
void insert(char *ch)
{
	Node *ptr = root;
	int nxt;
	while (*ch != '\0')
	{
		nxt = *ch - 'a';
		if (NULL == ptr->next[nxt])
		{
			ptr->next[nxt] = createNode( &trie[ncnt++] );
		}
		ptr = ptr->next[nxt];
		++ch;
	}
	++ptr->cnt;
	return ;
}
void buildAC_automation()
{
	while (!Q.empty())
	{
		Q.pop();
	}
	Q.push(root);
	Node *crt, *nxt, *ptr;
	while (!Q.empty())
	{
		crt = Q.front();
		Q.pop();
		for (int i = 0; i < MAXC; ++i)
		{
			nxt = crt->next[i];
			if (nxt != NULL)
			{
				for (ptr = crt->fail; ptr != NULL; ptr = ptr->fail)
				{
					if (ptr->next[i] != NULL)
					{
						nxt->fail = ptr->next[i];
						//nxt->cnt += nxt->fail->cnt; //
						break ;
					}
				}
				if (NULL == ptr)
				{
					nxt->fail = root;
				}
				Q.push(nxt);
			}
			else
			{
				if (root == crt)
				{
					crt->next[i] = root;
				}
				else
				{
					crt->next[i] = crt->fail->next[i];
				}
			}
		}
	}
	return ;
}
int query(char *str)
{
	int res = 0, id;
	Node *ptr = root, *ptt;
	while (*str != '\0')
	{
		id = *str - 'a';
		ptr = ptr->next[id];
		for (ptt = ptr; ptt != NULL && ptt->cnt != -1; ptt = ptt->fail)
		{
			res += ptt->cnt;
			ptt->cnt = -1;
		}
		++str;
	}
	return res;
}
void ace()
{
	char ch[52];
	for (scanf("%d", &test); test--; )
	{
		scanf("%d%*c", &n);
		initTrie();
		for (int i = 0; i < n; ++i)
		{
			gets(ch);
			insert(ch);
		}
		buildAC_automation();
		gets(str);
		printf("%d\n", query(str));
	}
	return ;
}
int main()
{
	ace();
	return 0;
}

ICCompiler II学习笔记(一)ICC II使用全流程 overview 学习笔记同步发布在我的个人网站上,欢迎来访查看。 个人学识有限,理解可能有误,仅供参考。 文章目录一、前言二、 ICC II 简介和 GUI2.1 Blocks 和 Design Libraries2.2 Objects2.3 Application Options三、Design Setup四、APR flow五、 课程主题:如何用 ICC II来实现最好的PPA 一、前言 现在的芯片都在追求一个极致的PPA 芯片的生成可以分为以下 5大步骤: Front-end Design:前端设计,最终产生 阅读详情

相关推荐

PyCharm旧版本下载地址

快捷找到PyCharm历史版本下载地址

piaopiaolanghua的专栏 4444

AC自动机的初步学习 hdu2222 AC自动机入门题

本来KMP和trie树就不太熟悉,但是就是想弄明白AC自动机是什么东东,所以就找了一些博客学习了一下,用hdu2222练了一下手。 推荐几篇很好的博客: http://www.cppblog.com/menjitianya/archive/2014/07/10/207604.html 这篇博客绝对是良心之作,尤其是那些图片,可以很好地讲述AC自动机的失败指针和trie图构造。 还有几篇不错

01的世界 696

Switch游戏安装新思路:抛弃Commander One,试试这款免费的Mac神器OpenMTP

本文介绍了Mac用户安装Switch游戏的新选择——免费工具OpenMTP,对比收费软件Commander One,OpenMTP在MTP连接稳定性和文件管理上更具优势。详细解析了OpenMTP的安装配置、核心功能及实战操作,帮助用户高效完成游戏安装,特别适合已破解并安装DBI的Switch用户。

weixin_30664051的博客 587

HDU2222-Keywords Search AC自动机

HDU2222-Keywords Search AC自动机算法

P_rogrammer的专栏 742

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 969

告别游戏卡关!用Cheat Engine 7.5修改单机游戏数据的保姆级教程(附Tutorial靶场练习)

本文提供了一份详细的Cheat Engine 7.5使用教程,帮助玩家轻松修改单机游戏数据。从基础操作到高级技巧,包括精确值扫描、模糊扫描、指针扫描和代码注入,教程还涵盖了《植物大战僵尸》和《星露谷物语》的实战案例,确保玩家能够安全、高效地优化游戏体验。

weixin_30082367的博客 785

hdu 2222 AC自动机

http://acm.hdu.edu.cn/showproblem.php?pid=2222   hdu 2222 AC自动机的模板题,题意大楷是:给出一些单词,和一段文本,输出文本中出现的单词个数,重复的不计。  AC自动的原理和KMP的原理差不多,AC自动机的Fail指针和KMP的next数组的原理是一样的。  具体的AC自动机的阐述网上很多,在这里我就不画蛇添足了。  来看看我写的一

853

STM32H7 FOC控制时序优化与PWM中点更新策略

在永磁同步电机(PMSM)的磁场定向控制(FOC)系统中,控制时序精度是决定电流环带宽、观测器收敛性与动态响应能力的基础要素。其核心在于理解PWM生成、ADC采样与控制计算三者之间的硬件级时间耦合关系——尤其在中心对齐模式下,标准更新机制引入的半周期延迟会破坏电压-电流瞬时映射,导致滑模观测器失配与高频相位滞后。通过将PWM更新事件绑定至重复计数器(RCR)清零点,可实现控制指令在开关周期中点生效,使等效电压矢量中心与计算时刻严格对齐。该策略显著提升系统确定性,为20 kHz以上高频电流环提供物理支撑,并广

flink9streamer的博客 859

HDU 2222 AC 自动机

题意 传送门 HDU 2222 题解 多模式匹配,裸的 ACACAC 自动机。 #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> #include <queue> using namespace std; #define maxn 10000 #define maxl 1000005 struct node { int cnt, a[26];

neweryyy的博客 216

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3034

阻抗控制器实现机器人关节运动控制

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章如:PID反馈控制器、前馈控制器、前馈+反馈控制器等等如:机械臂模型(几何解算)控制器、小车底盘运动学模型(几何解算)的控制器、四足机器人模型(预测迭代)的控制器等等如:微分平坦(无人机的轨迹跟随)等等如:MPC优化控制算法如:线性二次调节器(LQR)是基于模型的控制器,使用车辆状态来使误差最小化,Apollo使用LQR进行横向控制。横向控制包含四个组件:横向误差、横向误差的变化率、朝向误差和朝向的变化率。

qq_35635374的博客 365

AC自动机(HDU2222)

HDU2222 #include<iostream> #include<algorithm> #include<cstring> #include<string> #include<cstdio> #include<queue> using namespace std; struct Trie { Trie *n...

September_的博客 243

YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 + 完整代码】

yolov8,yolov8创新,yolov8改进

kay_545 2566

【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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

AC自动机模板(hdu2222)

具体学习参考https://blog.youkuaiyun.com/creatorx/article/details/71100840 模板来自kuangbin大神,HDU2222模板题 //====================== // HDU 2222 // 求目标串中出现了几个模式串 //==================== #include&lt...

bahuan1974的博客 131

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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的博客 355

【字符串】【hdu2222】AC自动机

AC自动机 一种多模匹配算法(如:有N个字符串Si以及一个字符串T,计算每个字符串Si在T中出现的次数) 原理:KMP+Trie 算法详解:ac自动机最详细的讲解,让你一次学会ac自动机 模板 const int C = 26; const int N = 1e5; stack <int> st; struct Node { int son[C], next, end; ...

想到什么写什么 239

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

HDU 2222 Keywords Search 题意:问文本串中出现了多少种模式串。 AC CODE【AC奥特曼板子题~】 #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring> #include &l...

L_X_ 211

【AC自动机】hdu2222 hdu2896 hdu3065 zoj3430 poj2778 hdu2243

AC自动机用于多个模式串与多个母串的匹配。 第一步:根据模式串建立字典树int len=strlen(w), r=root; for(int i=0;i<len;++i) { if(tree[r].ch[w[i]])r=tree[r].ch[w[i]]; else r=tree[r].ch[w[i]]=++cnt; } ++tree[r].c

蒟蒻的奋斗史 625

AC自动机 模板 【HDU2222】 Keywords Search

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

Todobe 500

hdu 2222 AC自动机模板题

首先学KMP   推荐《算法导论》以及本人的KMP博文 http://blog.youkuaiyun.com/u011026968/article/details/10382659 在学Trie  这个其实不难,随意找点资料就行 然后开始学AC自动机  http://www.cppblog.com/mythit/archive/2014/03/09/80633.html#206110  这个博文的讲解很好

Pilgrim 1363

AC自动机板子(hdu2222)&(hdu2896)

参考博客:https://blog.youkuaiyun.com/bestsort/article/details/82947639 AC代码:hdu2222 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<queue> #in...

ecjtu_17_TY的博客 264

【hdu2222-Keywords Search】AC自动机基础裸题

【hdu2222-Keywords Search】AC自动机基础裸题 http://acm.hust.edu.cn/vjudge/problem/16403 题意:给定n个单词,一个字符串,问字符串中出现了多少个单词。(若单词her,he,字符串aher中出现了两个单词) 题解: 每个单词末尾节点sum=1;find的时候每个点都顺着fail...

qq_25768269的博客 140

hdu_2222_Keywords Search(AC自动机板子)

题目连接:hdu_2222_Keywords Search 存个自己写的AC自动机 #include #include #define F(i,a,b) for(int i=a;i<=b;i++) const int AC_N=10001*50,tyn=26;//数量乘串长,类型数量 struct AC_automation{ int tr[AC_N][tyn],cnt[AC_N],

bin_gege的博客 354

HDU 2222(AC自动机模板)

AC自动机这个算法网上有很多资料,这里就不多赘述了。当从一个字符串中查找另一个字符串,我们有快速的算法KMP。现在的问题是要从一个字符串中查找很多字符串,或者要从多个字符串里分别查找很多字符串。AC自动机就是解决这个问题的。HDU2222的题意就是要从一个字符串中查找很多字符串,很裸的模板题。不过测试数据相当的水,有很多人错误的程序都AC掉了。我们把一个字符串中查找很多字符串中的一个字符串成为文本...

哇哈哈的专栏 746
上一篇: ZOJ 3547 & HDU 4059
下一篇: HDU 2896 AC自动机
codeforces_sphinx
博客等级 码龄15年 32粉丝 75原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值