【YbtOJ AC自动机 - 3】前缀匹配

本文介绍了如何使用AC自动机进行前缀匹配。通过构建AC自动机并处理母串,找出每个查询串与母串的最大匹配串长度。在解析过程中,标记特定路径表示的子串,最终解决查询。
摘要由CSDN通过智能技术生成

前缀匹配


题目

在这里插入图片描述


输入

在这里插入图片描述

输出

输出有 M M M

每一行输出一个数,表示查询串的前缀与母串的最大匹配串长度、


输入样例

7 3
SNNSSNS
NNSS
NNN
WSEE

输出样例

4
2
0

解题思路

我们先将询问构成 A C AC AC自动机,然后让母串在上面跑,遍历到的点到 r o o t root root形成的字符串一定是母串的子串

n x t nxt nxt r o o t root root形成的字符串也是母串的子串

那么我们对遍历到的点跳失配指针,并标记 r o o t root root所形成的字符串就是母串的子串

最后再拿询问在上面跑,遇到标记的点就更新即可


程序如下

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

using namespace std;

int n, m, tot;

ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值