news 2026/7/28 19:17:00

ac自动机学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ac自动机学习

模板:

#include<bits/stdc++.h> using namespace std; const int N=500005; struct ac_automation { int trie[N][26]; int e[N]; //字符串的结尾标记 int fail[N]; int L,root; int newnode() //清空该节点下面所有子节点并得到一个新节点 { for(int i=0;i<26;i++) trie[L][i]=-1; e[L++]=0; return L-1; } void init() { L=0; root=newnode(); } void insert(char *s) //结尾节点e数组为1非结尾节点e数组为0 { int p=root; for(int i=0;s[i];i++) { int k=s[i]-'a'; if(trie[p][k]==-1)trie[p][k]=newnode(); p=trie[p][k]; } e[p]++; } void build()// 一个节点的fail节点为,该节点的父节点的fail节点与该节点出边相同的节点 { queue<int>q; fail[root]=root; for(int i=0;i<26;i++) { if(trie[root][i]==-1) trie[root][i]=root; else { fail[trie[root][i]]=root; q.push(trie[root][i]); } } while(!q.empty()) { int k=q.front(); q.pop(); for(int i=0;i<26;i++) { if(trie[k][i]==-1) { trie[k][i]=trie[fail[k]][i]; } else { fail[trie[k][i]]=trie[fail[k]][i]; q.push(trie[k][i]); } } } } int query(char *t) { int p=root, res=0; for(int i=0;t[i];i++) { p=trie[p][t[i]-'a']; for(int j=p; j&&~e[j]; j=fail[j])res+=e[j],e[j]=-1; } return res; } }ac; int n; int t; char s[1000010]; int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); ac.init(); for(int i=1;i<=n;i++) { scanf("%s",s); ac.insert(s); } ac.build(); scanf("%s",s); printf("%d\n",ac.query(s)); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 19:16:16

Palworld存档工具终极指南:轻松管理你的游戏世界

Palworld存档工具终极指南&#xff1a;轻松管理你的游戏世界 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾为Palworld存档文件无法直接…

作者头像 李华
网站建设 2026/7/28 19:15:05

企业知识库AI助手的日志分析与性能优化实践

1. 企业知识库AI助手的核心价值与挑战企业知识库AI助手正在成为数字化转型中的关键基础设施。这类系统通过自然语言处理技术&#xff0c;让员工能够像与人类专家对话一样&#xff0c;快速获取企业内部的流程文档、技术手册、产品资料等结构化知识。根据实际部署经验&#xff0c…

作者头像 李华
网站建设 2026/7/28 19:13:41

《运维》三、解析二级域名和配置https证书(运维4)

解析二级域名和配置https证书 一、解析二级域名(DNS 解析 DNSPod)1、打开腾讯云/阿里云2、找到 云解析 -> 域名解析列表 -> 点击要解析域名的解析操作3、点击添加记录比如原来主域名为mywebsite.com&#xff0c;子域名名字填写abc4、ping abc.mywebsite.com 测试是否添加…

作者头像 李华
网站建设 2026/7/28 19:12:55

别信社交媒体谣言:94%的电动车车主不会回归燃油车

在今天的《Quick Charge》节目中&#xff0c;CDK公司的大卫托马斯为我们详细解读了一项最新研究数据——94%的现役电动车车主表示&#xff0c;他们永远不会再回归传统燃油车。从经销商互动体验到日常驾驶习惯&#xff0c;CDK的这项研究通过访问真实的电动车用户&#xff0c;深入…

作者头像 李华
网站建设 2026/7/28 19:12:38

OpenClaw开源自动化工具:原理、实践与性能优化

1. OpenClaw工具全景解析 OpenClaw作为一款新兴的开源自动化工具&#xff0c;正在DevOps和运维工程师群体中快速流行。它本质上是一个基于Python开发的跨平台命令行工具&#xff0c;核心功能是通过可编程的"抓取-处理-输出"流水线实现各类自动化操作。与传统的Shell脚…

作者头像 李华
网站建设 2026/7/28 19:10:53

QT6多线程编程实战:Worker-Object模式与线程安全通信详解

1. 项目概述与核心价值最近在整理项目代码时&#xff0c;发现很多刚接触QT6和C的朋友&#xff0c;对多线程编程既向往又畏惧。向往的是它能带来的性能提升和流畅的界面响应&#xff0c;畏惧的是那无处不在的竞态条件、死锁和难以调试的幽灵bug。这个名为“案例14_1”的项目&…

作者头像 李华