x./AC自动机

news/2025/11/3 19:19:47/文章来源:https://www.cnblogs.com/SHuxinn/p/19187988

前置::trie , kmp

AC自动机

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int MAXN = 2e5 + 5; // 模式串长度之和int tr[MAXN][26], fail[MAXN], tot = 0;
int e[MAXN], sum[MAXN];
vector<int> G[MAXN];
int ins(string s) {int u = 0;for (auto ch : s) {int c = ch - 'a';if (!tr[u][c])tr[u][c] = ++tot;u = tr[u][c];}return u;
}
void bfs() {queue<int> q;for (int c = 0; c < 26; c++)if (tr[0][c])q.push(tr[0][c]);while (!q.empty()) {int u = q.front(); q.pop();for (int c = 0; c < 26; c++)if (tr[u][c]) {fail[tr[u][c]] = tr[fail[u]][c];q.push(tr[u][c]);} elsetr[u][c] = tr[fail[u]][c];}
}int main() { ios::sync_with_stdio(0); cin.tie(0);int n; cin >> n; for (int i = 1; i <= n; i++) {string s; cin >> s;e[i] = ins(s);}bfs();for (int u = 1; u <= tot; u++)G[fail[u]].push_back(u);string t; cin >> t;int u = 0;for (auto ch : t) {int c = ch - 'a';u = tr[u][c];sum[u]++;}auto dfs = [&](int u, auto&& self) -> void {for (auto v : G[u]) {self(v, self);sum[u] += sum[v];}};dfs(0, dfs);for (int i = 1; i <= n; i++)cout << sum[e[i]] << '\n';return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题

最大公约数(即 gcd)和最小公倍数(即 lcm)的求法。该题的关键点在于,两个数的积等于它们最大公约数和它们最小公倍数的积。公式表示为 \(a \times b = \text{gcd}(a,b) \times \text{lcm}(a,b)\)。设作为答案的两个…

SQL Server 并发控制 第四篇:Snapshot Isolation (SI) 和 Read Committed Snapshot Isolation (RCSI)

乐观控制模式假定阻塞很少,快照隔离通过使用行版本控制来避免大多数锁定和阻塞。当数据被修改时,受影响行的已提交版本会被复制到 tempdb 并赋予版本号,此操作称为写时复制 (Copy on Write),并用于所有的插入、更新…

godot 描边插件

1:https://github.com/Magodra/GlowBorderEffect 2: outline.gdshader 不支持半透明:shader_type spatial; render_mode unshaded;/*Normal/Depth outline shader. Apply to nodes as a next pass shader texture.In…

对递归两层含义的理解

对递归两层含义的理解目录背景知识Definition从堆栈的角度理解递归缺点和For循环的区别总结Reference背景知识 先了解一下内存结构,但这个不是必须的。Definition 递归是一个循环结构,主要用来处理需要循环执行的任务…

怎么在现有App里融入AI对话能力

怎么在现有App里融入AI对话能力在数字化交互日益重要的今天,用户对App的智能化期望越来越高。尤其是在社交、电商、客服等领域,AI对话能力不仅能显著提升用户体验,还能有效降低运营成本。 但对于大多数开发团队而言…

DFS 序 O(1) 求 LCA

抛弃欧拉序,拥抱DFN。更新日志 2025/11/03:开工。思路 查询 \((dfn_u,dfn_v]\) 最小深度的节点的父亲即可。读者自证不难。

@pytest.fixture和setup/teardown

一.定义fixture 定义:@pytest.fixture是 Pytest 中用于定义​​测试夹具(Fixture)​​的核心装饰器,其核心作用是​​为测试用例提供可复用的资源初始化、数据准备和清理逻辑​​ 二:代替setup 和 teardownsetup =…

矿山通信如何实现全域一体化?迈威为煤矿装上了“智慧神经网络”

矿山通信如何实现全域一体化?迈威为煤矿装上了“智慧神经网络”在刚刚落幕的第二十一届中国国际煤炭采矿技术展上,全球矿业的目光再次聚焦于一个核心议题:数字化转型如何真正在矿山落地。作为这一进程的“神经中枢”…

Java异常处理实战精要:构建稳定应用的基石

在Java项目的开发历程中,异常处理是衡量代码健壮性与开发者专业度的重要标尺。一个处理得当的异常体系,能像程序的免疫系统一样,有效抵御外部的意外干扰,维持内部逻辑的稳定运行。本文将系统性地梳理Java项目中异常…

€$P2025

省流:唇膜玩 由于特殊原因把前面部分跳过 刚进考场被监考员扔到没人坐的一组的第一排,然后我的右边的右边的后面是小玉米 14:27 准时看 T1,这个 \(\frac{n}{2}\) 的限制导致最多只有一个部门会因为限制导致结果变小…

CSP2025 补题

游记没什么好搬的,链接。 T1 发现只会有一个超限,贪心换一下就行了。 T2 首先暴力枚举 \(k\) 拿边跑 MST 的复杂度是 \(O(2^knk + 2^kn\log nk)\) 的,考虑将 Kruskal 的 sort 换成 std::merge 即可通过,复杂度 \(O…

哈希学习总结

基本思想 哈希的核心思想在于,将输入映射到一个值域较小、可以方便比较的范围。 性质两个相同的元素哈希值相同。 两个不同的元素哈希值不同(若相同则称为冲突)。一维哈希(字符串哈希) 对于字符串 \(s\),其哈希值…

142.环形链表 II

var detectCycle = function(head) {if(!head)return null;let pre=head,cur=head;while(cur&&cur.next){pre=pre.next;cur=cur.next.next;if(pre===cur){let temp=head;while(temp!==pre){pre=pre.next;temp=…

2025 年 11 月制冷设备厂家推荐排行榜,小型制冷设备,空调制冷设备,工业制冷设备,商用制冷设备,大型制冷设备,制冷设备安装与维修服务公司推荐

2025 年 11 月制冷设备厂家推荐排行榜:小型、空调、工业、商用及大型制冷设备综合指南 行业背景与发展趋势 制冷设备行业作为现代工业和商业基础设施的重要组成部分,正经历着技术革新和市场需求的深刻变革。随着节能…

从创作到分析全搞定!2025公众号效率工具深度测评,这波升级95%的人还不知道

从创作到分析全搞定!2025公众号效率工具深度测评,这波升级95%的人还不知道作为新媒体运营者,你是否常陷入这些困境:熬夜赶稿后排版格式反复出错,跨平台分发时样式全乱;拟标题时反复修改仍无爆款潜力,配图怕侵权…

20232304 2025-2026-1 《网络与系统攻防技术》实验四实验报告

20232304 2025-2026-1 《网络与系统攻防技术》实验四实验报告 1.实验内容 一、恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者…

k8s-java应用部署(4)

我们一个常见的应用,一般都会涉及到访问数据库,配置等外部资源。同时也将自己的能力提供给外部访问,前面已经介绍pod的内外网络通信 k8s-Pod中的网络通信(3) 这次直接做一个java应用, 开发——打镜像——配置并部署…

指数函数和对数函数

一、指数函数的定义与特点:指数函数的一般形式为f(x) = a^x,其中a为常数,x为自变量。它以自然常数e为底,也可以选择其他正实数作为底。指数函数的特点如下:1. 当a>1时,随着x的增大,指数函数迅速增大,呈现指…

单目三角化原理 - MKT

单目三角化原理 为什么V T 的最后一列就是解?第一和第二帧产生地图点后,如果进来第三帧,如何定位第三帧,并将其建立的新地图点和现有地图点合并一个坐标系。考虑到第三帧和第二帧的相对位姿尺度未必与第一帧…