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

2022-05-20 15:46:11 字數 966 閱讀 3774

題目大意:

給定$n$個模式串$p(\sum|p_i|\le10^6)$和乙個$t(|t|\le10^6)$,求在$t$中被匹配的$p$的個數。

思路:ac自動機模板題,注意$t$中乙個字元可能對應自動機上多個結點,因此需要按照失配指標跳轉統計。統計過的結點需要特殊標記,避免重複統計,否則會超時。

1 #include2 #include3 #include4 inline int

getint()

11const

int n=1e6+1,s=26;12

char

s[n];

13int ans=0;14

class

ahocorasick

21int idx(const

char &c) const

24public:25

void insert(const

char

s) 31 val[p]++;32}

33void

get_fail()

37while(!q.empty())

44 fail[ch[x][i]]=ch[fail[x]][i];

45q.push(ch[x][i]);46}

47q.pop();48}

49}50void find(const

char

s) 58}59

}60};61

ahocorasick ac;

62int

main()

68ac.get_fail();

69 scanf("%s"

,s);

70ac.find(s);

71 printf("

%d\n

",ans);

72return0;

73 }

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

題目傳送門 終於看懂啦!終於學會了ac自動機啦!flag立起 寫篇部落格梳理一下自己的思路吧。在文章的開頭,必須先放上一些大佬的部落格來壓壓場面 當然是orz zzk大佬,神犇傳送門 然而ac自動機的原理其實是比較好理解的,就是把trie樹和kmp的思想結合起來。這麼說起來kmp就是單個字串的ac自...

AC自動機模板1 洛谷3808

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

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

給定 n n 個模式串和1個文字串,求有多少個模式串在文字串裡出現過 多模匹配用ac role presentation aca c自動機 首先建造一棵字典樹,新增所有模式串,然後建造失配指標,最後進行匹配 luogu judger enable o2 include include include...