HDU-2222(Keywords Search)

还是AC自动机入门题...不解释了,可以看看其它两篇AC自动机的解题报告。

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2222

View Code
  1 //====================================================================
  2 //Name       :HDU 2222-Keywords Search
  3 //Author     :hxf
  4 //copyright  :http://www.cnblogs.com/Free-rein/
  5 //Description:
  6 //Data       :2012.7.20
  7 //========================================================================
  8 #include<iostream>
  9 #include<cmath>
 10 #include<algorithm>
 11 #include<stdio.h>
 12 #include<string.h>
 13 using namespace std;
 14 #define MAXN 10002
 15 const int len=26;//最多只有26个英文字母
 16 struct Tril{
 17     Tril *fail;
 18     Tril *son[len];
 19     int count;
 20     Tril(){
 21         fail=NULL;
 22         count=0;
 23         memset(son,NULL,sizeof(son));
 24     }
 25 }*tril[500001];
 26 char word[50];
 27 char str[1000001];
 28 void creat(char *word,Tril *root)
 29 {
 30     Tril *p=root;
 31     int lenth=strlen(word);
 32     for(int i=0;i<lenth;i++)
 33     {
 34         int index=word[i]-'a';
 35         if(p->son[index]==NULL)
 36             p->son[index]=new Tril();
 37         p=p->son[index];
 38     }
 39     p->count++;
 40 }
 41 void creat_ac_automation(Tril *root)
 42 {
 43     int first=0;
 44     int last=0;
 45     root->fail=NULL;
 46     tril[last++]=root;
 47     while(first<last)
 48     {
 49         Tril *p=tril[first++];
 50         Tril *k=NULL;
 51         for(int i=0;i<len;i++)
 52         {
 53             if(p->son[i]!=NULL)
 54             {
 55                 if(p==root)
 56                     p->son[i]->fail=root;
 57                 else
 58                 {
 59                     k=p->fail;
 60                     while(k!=NULL)
 61                     {
 62                         if(k->son[i]!=NULL)
 63                         {
 64                             p->son[i]->fail=k->son[i];
 65                             break;
 66                         }
 67                         k=k->fail;
 68                     }
 69                     if(k==NULL)
 70                     {
 71                         p->son[i]->fail=root;
 72                     }
 73                 }
 74                 tril[last++]=p->son[i];
 75             }
 76         }
 77     }
 78 }
 79 int query(Tril *root)
 80 {
 81     int lenth=strlen(str);
 82     int sum=0;
 83     Tril *p=root;
 84     for(int i=0;i<lenth;i++)
 85     {
 86         int index=str[i]-'a';
 87         while(p->son[index]==NULL&&p!=root)
 88         {
 89             p=p->fail;
 90         }
 91         p=p->son[index];
 92         if(p==NULL)
 93             p=root;
 94         Tril *k=p;
 95         while(k!=root&&k->count!=-1)
 96         {
 97             sum=sum+k->count;
 98             k->count=-1;
 99             k=k->fail;
100         }
101     }
102     return sum;
103 }
104 int main()
105 {
106     int t;
107     scanf("%d", &t);
108     while(t>0)
109     {
110         t--;
111         Tril *root=new Tril();
112         int n;
113         scanf("%d", &n);
114         for(int i = 0;i < n;i++)
115         {
116             scanf("%s", word);
117             getchar();
118             creat(word,root);
119         }
120         creat_ac_automation(root);
121         scanf("%s",str);
122         getchar();
123         printf("%d\n",query(root));
124     }
125     return 0;
126 }

 

 

转载于:https://www.cnblogs.com/Free-rein/archive/2012/08/09/2630206.html

npu-smi info 华为昇腾NPU 状态监控工具解读 用于查询所有设备的基本信息。 阅读详情

相关推荐

STM8库函数开发手册(3) //UART1、内部EEPROM、FLASH操作库、IIC(硬、软)

STM8S 微控制器家族的通用同步异步收发器(UART1,UART2 或者UART3)提供了一种灵活的方法与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。STM8 的UART 提供范围的波特率选择,并且支持多处理器通讯。UART 也支持LIN(局部互联网)协议版本1.3,2.0,和2.1 以及在主模式下的J2602。 UART1 和UAR...

finedayforu的博客 2520

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

深度学习PyTorch代码模板——模型训练框架、数据处理、绘图…

个人用深度学习代码模板:模型训练框架、数据处理、绘图等。待补充。

https://www.hyperplasma.top 1908

HDU2222 Keywords Search

题目链接:HDU2222 Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 49488    Accepted Submission(s): 15845 Problem Des

teddywang 817

树莓派用网线连着电脑,但是找不到它的ip 以及设置静态IP

第一次的话,树莓派默认是没有ssh的。需要把内存卡取出来,新建一个ssh文件,这个简单,新建一个txt文件重命名就好了。 如果前面配置了连接wifi的conf文件,它是会自动去连接wifi的,wifi连不上,它才会去尝试有线连接。所以把它的wifi关了,才会自动用网线连接。 另外,建议设置静态ip连接,这样避免网络连接突然中断。具体在etc/dhcpcd.conf文件中,把这几行前面的#去掉,然后后面的信息改成自己的就好了。 具体改法: 第一行是ip地址,这个找到自己电脑的ip段,然后改后面两个数字就好了

wander_ing的博客 1万+

数字IC物理验证实战 | 从Calibre LVS报告到Innovus定位的Debug全链路解析

本文详细解析了数字IC物理验证中Calibre LVS报告的Debug全流程,从INCORRECT NETS错误的初探到Innovus定位技巧,提供了实战案例和高效工具的使用方法。重点介绍了Calibre高亮功能、Innovus验证命令以及前后端工具联动的关键策略,帮助工程师快速定位和解决LVS问题,提升物理验证效率。

weixin_30919429的博客 127

hdu2222 Keywords Search

AC自动机裸题

AaronPolaris 1713

使用LSTM进行多任务学习:共享模型预测多个目标

多任务学习是一种机器学习方法,旨在通过同时学习多个相关任务来提高模型的学习效率和泛化能力。MTL的核心思想是共享模型的参数,从而在不同任务之间捕捉到共享的特征。长短期记忆网络(LSTM)是循环神经网络(RNN)的一种改进版本,专门用于解决传统RNN在处理长序列时出现的梯度消失和梯度爆炸问题。LSTM通过引入多个门控机制(输入门、遗忘门和输出门)来控制信息的流动。本文详细探讨了如何使用LSTM进行多任务学习。我们介绍了多任务学习的理论基础、LSTM的特点,以及如何构建和训练一个多任务LSTM模型。

斌擎科技 1152

Hdu 2222 Keywords Search

package hdu; import java.util.ArrayDeque; import java.util.Scanner; /** * @description HDU 2222 Keyboards Search. * @technique AC自动机, 字典树。 * @version 1.2 * @date 20120727 * @time 20:2

Alex 493

【腾讯小龙虾WorkBuddy专栏04】一文搞懂WorkBuddy的「专家」和「专家团」

WorkBuddy专家与专家团:专业级AI协作解决方案 WorkBuddy的专家(Expert)与专家团(Expert Team)功能颠覆了通用AI的局限性,提供角色化、可交付的专业服务。 核心优势 专家:深度垂直领域的AI顾问,具备人设、方法论、工具链,如全栈开发专家能直接交付完整项目,而非代码片段。 专家团:多智能体协作,自动拆解复杂任务(如竞品分析、全栈开发)并分发给对应角色,并行执行后整合输出,效率提升显著。 使用场景 单专家:解决专业问题(如SQL优化、UI设计)。

AI人人懂 2023

挣脱枷锁:网页禁止复制/F12失效/右键失灵时的破局之道

大家在网上冲浪的否遇到过这种情况?急需网页上的一段关键信息、一段优美的文字、一个重要的代码片段,或者只是想收藏某篇文章,却发现:文本选择被阻止,右键菜单被禁用,开发者工具(F12)被屏蔽,查看源代码(Ctrl+U)失效?本文会有力解决这些封锁。

安德洛夫 2112

【HDU 2222】Keywords Search

1.题目链接。题目大意:给定多个单词,一段文本,找出这段文本中出现过多少个给定的单词。要是单词只有一个,直接KMP完事,但是单词多个就不行了,这是典型的多模式匹配算法。对于多模式匹配算法,我也是刚刚学了,因为之前字符串算法都是交给其他的队友完成。推荐文章:https://www.cnblogs.com/cmmdc/p/7337611.html。 里面写了AC自动机的详解:其实就是树上KMP完事...

YG爱木木 410

将 AMDP Function Implementations 讲透:从 SAP CDS View 表函数到 AMDP 方法的完整实战与最佳实践

AMDP函数实现:连接ABAP与HANA的高效桥梁 本文面向ABAP开发者,详细解析AMDP函数实现技术,帮助在SAP HANA环境中充分发挥数据库算力。核心内容包括: 技术价值:解决复杂计算场景(窗口函数、跨表聚合等)中Open SQL和CDS的局限性 两种实现类型:内部复用函数与CDS表函数实现,对比其声明规则和用途差异 关键语法要点:FOR TABLE FUNCTION绑定、只读约束、参数与返回类型自动生成机制 实战应用:以采购订单聚合为例,展示AMDP在实时报表中的性能优势 完整示例:提供基于航线数

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 386

AC自动机 模板 【HDU2222】 Keywords Search

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

Todobe 500

IMSL CNL 7.0.0 (x86-64)Crack

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU 2222 Keywords Search【ACAM】

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

Irish_Moonshine的博客 259

VC中sqlite的使用

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

HDU - 2222——Keywords Search

http://acm.hdu.edu.cn/showproblem.php?pid=2222T个测试数据,n个关键字,问所给字符串出现了哪几种关键字。HDU的测试数据比较弱,提供一组数据1 2 sher he sher输出 2.ac代码。#include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; #inclu...

lose__way的博客 424

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU 2222 Keywords Search

ac自动机第一题 代码参考kuangbin,用数组实现 思想参考的这个,写得很详细:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html #include #include #include #include #include using namespace std; #define N 500010 struct trie

lj94093的专栏 578

HDU2222Keywords Search

题意:给n1000000的模式串。 用模式串建立好自动机然后在模式串上搜索就好了 #include #include #include #include #include #include using namespace std; struct Tree { int next[500010][26],fail[500010],end[500010]; int root,L; int

as604412059的博客 356

hdu 2222 Keywords Search

Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.Q Hand In Hand Online Acmers Forum | Discuss Statistical Charts Problem Archive Realtime Judge Status Authors Ranklist C/C++/Java Exams ACM Steps Go to Job Contest Live

xunzhaofupo的博客 227

HDU2222-Keywords Search AC自动机

HDU2222-Keywords Search AC自动机算法

P_rogrammer的专栏 742

HDU-2222 Keywords Search

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意: 给你很多个单词,然后给你一篇文章,问给出的单词在文章中出现的次数。 解题思路: AC自动机入门题。需要注意的就是可能有重复单词,坑死人不偿命!~~~~ 代码如下: #include #include #include #include using namespace st

飘过的小牛 9096

HDU2222-Keywords Search

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 retrieval system. Ev...

Shaosen的博客 419

Hdu2222Keywords Search

Hdu2222存一发AC自动机模板…【代码】#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <queue> #define N 500005 #define INF 1LL<<60 using namespace std; typedef long long ll; ll r

Heret1c 423

HDU-2222 Keywords Search 【题解】

题目链接:HDU-2222 或 Vjudge 简单说明:   题意是按行给出n个串,再给一个文本,问在文本中出现了串中的几个。题目没强调串是互不相同的哦!   ac自动机的建立,其中插入过程借助了字典树,处理回溯数组(也有人称失败数组)过程是一个广搜运用了STL的队列(queue)。ac自动机的过程还在写。   这是学习ac自动机的第一题,如果wa的话,那就要注意字串结束标记...

armm35291的博客 292

[HDU2222]Keywords Search 做题笔记

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2222 这题是比较裸的AC自动机,很容易想出AC做法但却并不容易AC。。。 1、首先!这题有重复的单词!! 2、千万不要在for循环里用strlen!!这题匹配串长度1000000,如果每次循环都要strlen,那计算开销是相当大的。我不在里面打strlen时间343ms,如果在里面大strlen则

mhlwsk的博客 344
上一篇: HDU-2993--MAX Average Problem详解
下一篇: POJ-2192(Zipper)
badao7116
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值