洛谷P3808 模板 AC自動機(簡單版)

2021-09-07 18:56:21 字數 1128 閱讀 6614

這是一道簡單的ac自動機模板題。

用於檢測正確性以及演算法常數。

為了防止卡oj,在保證正確的基礎上只有兩組資料,請不要惡意提交。

給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。

輸入格式:

第一行乙個n,表示模式串個數;

下面n行每行乙個模式串;

下面一行乙個文字串。

輸出格式:

乙個數表示答案

輸入樣例#1: 

複製

2aaa

aa

輸出樣例#1: 

複製

2

subtask1[50pts]:∑length(模式串)<=10^6,length(文字串)<=10^6,n=1;

subtask2[50pts]:∑length(模式串)<=10^6,length(文字串)<=10^6;

感覺ac自動機比字尾自動機好理解多了qwq

就是把匹配串的trie樹建出來然後跑一下匹配

//

luogu-judger-enable-o2

//luogu-judger-enable-o2

#include#include

#include

using

namespace

std;

const

int maxn = 1e6 + 10

;char

s[maxn];

intn;

int ch[maxn][26], fail[maxn], val[maxn], tot = 0, root = 0

;void insert(char *s)

val[now]++;

}void

getfail()

}}int find(char *s)

return

ans;

}int

main()

getfail();

scanf("%s

", s + 1

); printf("%d

", find(s));

return0;

}

AC自動機入門,洛谷P3808

給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。輸入輸出格式 輸入格式 第一行乙個n,表示模式串個數 下面n行每行乙個模式串 下面一行乙個文字串。輸出格式 乙個數表示答案 輸入輸出樣例 輸入樣例 1 2aaa aa輸出樣例 1 兩個會出現在模板題面裡的詞語 文字串和模式串 給你幾個單詞...

洛谷P3808 模板 AC自動機(簡單版)

給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。輸入格式 第一行乙個n,表示模式串個數 下面n行每行乙個模式串 下面一行乙個文字串。輸出格式 乙個數表示答案 include using namespace std int const n 1000005 int const m 1000...

洛谷P3808 模板 AC自動機(簡單版)

給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。subtask1 50pts length 模式串 106 10 6 106,length 文字串 106 10 6 106,n 1 subtask2 50pts length 模式串 106 10 6 106,length 文字串 10...