当前位置: 首页 > news >正文

AC 自动机

好像还算简单(?
Aho-Corasick automaton 多模匹配显然需要建字典树
fail 指针就是找最长的后缀,使它能继续在字典树上匹配
如果叶子节点下一个节点还要往上连边

P3808 AC 自动机(简单版)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define debug(x) cout<<#x<<" = "<<x<<endl;
const int N = 1e6 + 5;
int n, trie[N][26], num, cnt[N], fail[N];
string s; 
inline ll read(){ll s=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){s=(s<<1)+(s<<3)+(c^48);c=getchar();}return s*f;
}
void insert(string s){int p = 0;for(int i=0;i<s.size();i++){int c = s[i] - 'a';if(!trie[p][c])	trie[p][c] = ++num;p = trie[p][c];}cnt[p]++;
}
void pretreat(){queue<int> q;for(int i=0;i<26;i++)if(trie[0][i])q.push(trie[0][i]);while(!q.empty()){int h = q.front();q.pop();for(int i=0;i<26;i++){if(trie[h][i]){fail[trie[h][i]] = trie[fail[h]][i];q.push(trie[h][i]);}else trie[h][i] = trie[fail[h]][i];}}
}
int main(){n = read();for(int i=1;i<=n;i++){cin >> s;insert(s);}pretreat();cin >> s;int p = 0, ans = 0;for(int i=0;i<s.size();i++){int c = s[i] - 'a';p = trie[p][c];for(int t = p;t && ~cnt[t];t = fail[t])ans += cnt[t], cnt[t] = -1;}cout << ans;return 0;
}
http://www.jsqmd.com/news/283671/

相关文章:

  • 2026年线下广告监测公司排行榜,上海浦零科技优势显著上榜
  • 互联网教育平台如何优化WordPress的Word公式渲染性能?
  • 建筑设计说明-词语解释
  • 钡铼技术BL121:架起 Modbus 与 OPC UA 之间的工业数据桥梁
  • 计算机毕业设计|基于springboot + vue企业工资管理系统(源码+数据库+文档)
  • 选空压机厂家要注意什么,靠谱厂家怎么找
  • PCB邮票孔桥连宽度与掰开力的关系
  • 2026必备!研究生必看TOP10 AI论文写作软件深度测评
  • 基于AI智能名片链动2+1模式小程序的微商营销渠道效能对比研究
  • 导师严选2026专科生AI论文工具TOP10:开题报告文献综述全攻略
  • 计算机毕业设计|基于springboot + vue酒店预订系统(源码+数据库+文档)
  • 基于Python 错题管理系统(源码+数据库+文档)
  • 在 JavaScript 中用 var, let, 以及 const 有什么差別?什么时候该用哪个?
  • 专业农文旅景区策划运营管理提升机构,2026年新方案
  • 爱信食品包装设计价格多少,设计费用贵不贵?
  • 基于Python 深度学习酒店评论文本情感分析系统(源码+数据库+文档)
  • 2026年眼罩深度选型指南:如何为你的睡眠与护理场景匹配最佳方案?
  • 基于Python个人财务管理系统(源码+数据库+文档)
  • PCB拼板设计:这些方式你一定要知道
  • 读懂《资治通鉴》中的历史规律
  • PCB成型毛刺:从根源控制告别烦恼
  • 基于Python农产品销售数据分析系统(源码+数据库+文档)
  • 整合单细胞与空间转录组学解析非小细胞肺癌免疫微环境异质性
  • 同城便民小程序源码系统,一站式解决生活服务所有需求
  • 国产角接触球轴承厂家推荐 五大口碑实力产品靠谱的源头厂家 替代进口轴承的品质之选
  • 2026年灵活用工平台:全场景、技术力、合规性、服务与性价比排行榜
  • Python Web 开发进阶实战:AI 编排引擎 —— 在 Flask + Vue 中构建低代码机器学习工作流平台
  • 史上最全Linux系统镜像汇总,推荐收藏备用
  • Claude Code 支持重磅扩展 Skills —— 用最新 API 构建更靠谱的 AI 项目
  • SpringData JPA 都能写 SQL,为啥还要用 MyBatis?