這是一道簡單的ac自動機模板題。
用於檢測正確性以及演算法常數。
為了防止卡oj,在保證正確的基礎上只有兩組資料,請不要惡意提交。
給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。
輸入格式:
第一行乙個n,表示模式串個數;
下面n行每行乙個模式串;
下面一行乙個文字串。
輸出格式:
乙個數表示答案
輸入樣例#1:
複製
2aaaaa
輸出樣例#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...