洛谷P5357 AC自動機模板題

2021-10-02 11:13:04 字數 1296 閱讀 1600

p5357

對應輸出n個模式串在文字串**現的次數

ac自動機?

坑點:可能出現重複模板串,所以標記結尾時做相應的修改即可

這裡的寫法是把fail樹對應的圖建出來了,

其實不需要建也可以求出(這不重要)

void

getans

(void

)}

#include

using namespace std;

typedef

long

long ll;

typedef pair<

int,

int>pii;

typedef pairpll;

const

int maxn=

2e6+5;

const

int mod=

1e9+7;

const

int oo=

1e9+8;

char s[maxn+5]

;int fail[maxn+5]

,trie[maxn+5]

[26],tot=

0,ans[maxn+5]

,dp[maxn+5]

;int n;

queue<

int>q;

vector<

int>vec[maxn+5]

,ed[maxn+5]

;void

dfs(

int x)

for(

int i=

0;i.size()

;i++

) ans[ed[x]

[i]]

=dp[x];}

struct ac_auto

ed[p]

.push_back

(id);}

void

build_fail()

else trie[f]

[i]=trie[fail[f]

][i];}

}}void

check

(char

*s)dfs(0

);}}ac;

intmain()

scanf

("%s"

,s);

ac.build_fail()

; ac.

check

(s);

for(

int i=

1;i<=n;i++

)}

洛谷P5357 AC自動機 二次加強版

題目大意 給你n個模式串t it i ti 乙個匹配串s.問你每個模式串出現過多少次.n 2 e5,ti 2e5 s 1e6 n leq 2e5 sum t i leq 2e5 s leq 1e6 n 2e5,ti 2 e5,s 1 e6題目思路 模板 優化。其實我們可以發現ac自動機在查詢的時候,...

AC自動機模板 洛谷3796

ac自動機的第三個模板 其實,個人覺得,目前我寫的這三個不同的模板完全是可以合併在一起求解的。只是,在這兩個無關聯的oj上,同乙個ac自動機都可以完成的問題被拆成了三道題而已。因此,只需要略加修改即可解決這道題。具體題目請上洛谷檢視 include include include include i...

洛谷 5357 模板 AC自動機(二次加強版)

題目描述 給你乙個文字串 s 和 n 個模式串 t 1.n t t1 n 請你分別求出每個模式串 t it i ti 在 s 現的次數。輸入格式 第一行包含乙個正整數 n 表示模式串的個數。接下來 n 行,第 i 行包含乙個由小寫英文本母構成的字串 t it i ti 最後一行包含乙個由小寫英文本母...