hdu 2222 ac自动机

AC自动机模板+例题(HDU2896+HDU3065+HDU2222) 病毒侵袭中(HDU2896) #include<map> #include<cmath> #include<queue> #include<vector> #include<cstdio> #include<string> #include<cstdlib> #include<cstring> ... 阅读详情

一直米有去拍个ac自动机的版,找了个模板题,一发居然米拍过。

贴下自己版吧

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>

using namespace std;
namespace AC {
    const int dict = 26;
    const int root = 0;
    const int maxn = 3000000;
    struct node {
        int son[dict], fail, idx;
    } tree[maxn];
    bool apr[10010];
    bool vis[3000000];
    int cnt[10010];  //处理重复出现字符串
    int sz;
    int initNode(int idx) {
        memset(tree[idx].son,0,sizeof(tree[idx]));
        tree[idx].fail=tree[idx].idx=0;
        return idx;
    }
    void init(){
        sz = initNode(0);
        memset(apr,0,sizeof(apr));
        memset(cnt,0,sizeof(cnt));
    }
    void ins(char *s,int idx) {
        int cur=root,t;
        while (*s)
        {
            t = *s -'a';
            if (!tree[cur].son[t]) tree[cur].son[t] = initNode(++sz);
            cur = tree[cur].son[t];
            s++;
        }
        if(tree[cur].idx!=0) cnt[tree[cur].idx]++;
        else tree[cur].idx = idx;
    }
    queue<int> q;
    void buildac() {
        while(!q.empty()) q.pop();
        int i, cur, nxt, f;
        for ( i = 0 ; i < dict ; i++ )
            if (tree[root].son[i])	q.push(tree[root].son[i]);

        while (!q.empty()) {
            cur = q.front();
            q.pop();
            f = tree[cur].fail;
            for ( i = 0 ; i < dict ; i++ )
                if (tree[cur].son[i]) {
                    nxt  = tree[cur].son[i];
                    tree[nxt].fail = tree[f].son[i];
                    q.push(nxt);
                }
                else	tree[cur].son[i] = tree[f].son[i];
        }
    }
    int search(char *s){
        int i,cur=0;
        for (i=0 ; i<=sz ; i++ ) vis[i]=0;
        for ( ; *s ; s++ ){
            cur = tree[cur].son[*s-'a'];
            for ( i=cur ; i && !vis[i]; i=tree[i].fail ){ //vis用于优化
                vis[i]=1;
                apr[tree[i].idx]=1;
            }
        }
        int ret = 0;
        for(int i = 1;i<=10010;++i){
            if(apr[i]){
                ret++;
                ret += cnt[i];
            }
        }
        return ret;
    }
};
char str[1000010];
int main() {
    int t,n;
    scanf("%d",&t);
    while(t--){
        AC::init();
        scanf("%d",&n);
        for(int i = 1; i<=n;++i){
            scanf("%s",str);
            AC::ins(str,i);
        }
        AC::buildac();
        scanf("%s",str);
        printf("%d\n",AC::search(str));
    }
    return 0;
}



3种六轴IMU姿态解算算法对比:互补滤波、Mahony与卡尔曼滤波性能实测 本文深入对比了三种六轴IMU姿态解算算法:互补滤波、Mahony与卡尔曼滤波的性能表现。通过实测数据分析了各算法在精度、计算复杂度和适用场景上的差异,为无人机、机器人等运动控制系统提供了选型建议。重点探讨了六轴陀螺仪与加速度传感器的数据融合技术,帮助开发者根据项目需求选择最优解算方案。 阅读详情

相关推荐

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

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

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

01的世界 696

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 359

HDU2222-Keywords Search AC自动机

HDU2222-Keywords Search AC自动机算法

P_rogrammer的专栏 742

cocos2dx lua + protobuf

vs 2015 cocos2dx 3.10  lua  protobuf1. 下载 protobuf 源码     https://github.com/bnnswyp/protobuf/tree/master/protobuf-2.5.0    解压后的文件列表如下所示         其中 vsprojects 文件夹为 protobuf 的vs 工程2. 打开 protobuf.sln 编译...

u014486706的博客 2163

Hyperledger Fabric 网络搭建详解

写在前面:博主也是因为一些原因刚刚入坑区块链,我认为在我们入门新技术的时候,入门总是最困难的部分,只要入门了,后面学习起来就会越来越轻松,在网上找了很多文章,我觉得大多条理不是很清楚。本文章会详细介绍fabric(v1.0)环境部署,以及在搭建过程我遇到一些问题及解决方案,希望可以帮助到你们。 博主环境机器:VMware15 Ubuntu16.04 fabric(v1.0)环境部署一、必备软件安装1.ubuntu环境安装2.Go语言3.Docker安装4. Docker-Compose 安装二、Fa.

林中有神君 1万+

hdu 2222 AC自动机

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

853

用长tree方式做等长线

1)写一个sdc,把等长线的起点设置成clock source,用于创建create_clock,至于period和waveform等参数随便写即可。然后clock_opt -from build_clock -to route_clock即可。3)在正式cts之前或之后,给自己创建的scenario长tree并don't touch。前面讲过了如何用set_data_check做等长线,这里再讲一下如何用cts的方式做。2)为该clock创建一个新mode,并创建对应的scenario。

m0_61544122的博客 622

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

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

算法大师! 672

世界职业院校技能大赛财经赛道项目参考逐字稿五

世界职业院校技能大赛财经赛道项目参考逐字稿五

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 139

AC自动机(HDU2222)

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

September_的博客 243

用一套可追溯的闭环,把设备变成可管理的资产:SAP S/4HANA Asset Management 模块详解

摘要:SAP S/4HANA的资产管理模块(EAM)通过标准化流程管理企业资产全生命周期,解决资产状态、需求和资源的不确定性。系统将资产抽象为技术对象,支持纠正性和预防性维护流程,通过维护工单实现可执行的工作包,并与物料管理、财务、生产计划等模块集成形成管理闭环。该模块可帮助降低非计划停机时间,通过数据驱动决策优化维护策略,提升资产可用率和运营效率。(149字)

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

【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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

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

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

AC自动机模板(hdu2222)

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

bahuan1974的博客 131

【字符串】【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自动机】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自动机_模板】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】 Keywords Search

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

Todobe 500

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

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

【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
上一篇: Codeforces Round #185 (Div. 1) B - Cats Transport DP 斜率优化
下一篇: Codeforces Round #186 (Div. 2) D Ilya and Roads DP 单调优化
work_freedom
博客等级 码龄14年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值