ac自动机板子
hdu2222
#include<bits/stdc++.h>
#define ll long long
#define M 500005
using namespace std;
int tr[M][30],T,n,i,fail[M],cnt[M],sz;
char s[1000005];
void add(char *s){
int len=strlen(s),u=0;
for(int i=0;i<len;i++){
if(!tr[u][s[i]-'a'])tr[u][s[i]-'a']=++sz;
u=tr[u][s[i]-'a'];
}
cnt[u]++;
}
void getfail(){
fail[0]=0;
queue<int>Q;
for(int i=0;i<26;i++){
int u=tr[0][i];
if(u){
fail[u]=0;Q.push(u);
}
}
while(!Q.empty()){
int u=Q.front();Q.pop();
for(int i=0;i<26;i++){
int v=tr[u][i];
if(v){
fail[v]=tr[fail[u]][i];
Q.push(v);
}else
tr[u][i]=tr[fail[u]][i];
}
}
}
ll Find(char *s){
int len=strlen(s),u=0;
ll ans=0;
for(int i=0;i<len;i++){
u=tr[u][s[i]-'a'];
for(int j=u;j&&cnt[j]!=-1;j=fail[j]){
ans+=cnt[j];
cnt[j]=-1;
}
}
return ans;
}
int main(){
cin>>T;
while(T--){
memset(tr,0,sizeof(tr));
memset(cnt,0,sizeof(cnt));
sz=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",s);add(s);
}
getfail();
scanf("%s",s);
printf("%lld\n",Find(s));
}
}
ac自动机板子的更多相关文章
- AC自动机板子题/AC自动机学习笔记!
想知道484每个萌新oier在最初知道AC自动机的时候都会理解为自动AC稽什么的,,,反正我记得我当初刚知道这个东西的时候,我以为是什么神仙东西,,,(好趴虽然确实是个对菜菜灵巧比较难理解的神仙知识点 ...
- hdu_2222_Keywords Search(AC自动机板子)
题目连接:hdu_2222_Keywords Search 存个自己写的AC自动机 #include<cstdio> #include<cstring> #define F(i ...
- hdu2222 Keywords Search (AC自动机板子
https://vjudge.net/problem/HDU-2222 题意:给几个模式串和一个文本串,问文本串中包含几个模式串. 思路:贴个板子不解释. #include<cstdio> ...
- AC自动机板子(from. qwer)
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...
- Keywords Search HDU - 2222 AC自动机板子题
In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey al ...
- 模板 AC自动机
题目描述 有$N$ 个由小写字母组成的模式串以及一个文本串$T$ .每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串$T$ 中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据 ...
- 洛谷P3966 单词 [TJOI2013] AC自动机
正解:AC自动机 解题报告: 传送门! 先来提供一个40pts错解QAQ 首先看到这题就会想到AC自动机板子题2鸭!然后就照着那题的套路打一下,随便改一点儿,简单来说就是每次经过一个节点都要++,然后 ...
- P3808 【模板】AC自动机(简单版)
题目背景 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. 管理员提示:本题数据内有重复的单词,且重复单词应该计算多次, ...
- 「kuangbin带你飞」专题十七 AC自动机
layout: post title: 「kuangbin带你飞」专题十七 AC自动机 author: "luowentaoaa" catalog: true tags: - ku ...
随机推荐
- 100-days: The one day
Title:In tech race with China, US universities may lose a vital edge in tech race with 与...的科技比赛中 e ...
- HA状态下防火墙损坏处理
问题描述: web登录防火墙管理地址,发现在 状态-系统信息 里集群成员只有一台原备机.到机房发现原主机只有power灯是亮着的,HA灯和status灯都不亮. 用笔记本直连防火墙的mgmt口不亮,c ...
- 用户管理系统之class
接着上一篇博客继续往下总结,上一篇博客的地址:https://www.cnblogs.com/bainianminguo/p/9189324.html 我们开始吧 这里我们就需要先看下我们设计的数据库 ...
- ubuntu下安装redis及常用操作
reids是一个内存数据库,具有存取速度快,使用简单等优点.我们常常在分布式或者负载均衡的系统中使用它来缓存一些公用的且不是很大量的数据,比如session或者各类token(比如微信的access_ ...
- swift - 添加定时器
mport UIKit /// 控制定时器的类 class ZDTimerTool: NSObject { /// 定时器 // private var timer: Timer? /// GCD定时 ...
- ios 获取当前时间
1.第一种返回的时间是一个整个的字符串. NSDate *timeDate = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateForm ...
- Aspose.Words三 创建表格
创建表格,实现合并行.和并列.表居中.表格水平和垂直居中.设置单元格边框颜色和样式. string templateFile = Server.MapPath("table_templ.do ...
- python is 和 == 和=
Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...
- java 字符串截取类 区分中文、英文、数字、标点符号
package com.founder.fix.ims; /** * @author WANGYUTAO * 操作字符串 */ public class SubString { // public s ...
- Mybatis 加载 Mapper配置的四种方式
具体信息 https://blog.csdn.net/tanga842428/article/details/79285957