AC自動機專題 不可重疊匹配 ZOJ3228

2021-10-24 13:17:31 字數 1043 閱讀 6979

傳送門:

題目大意:

給你乙個匹配文字,給你若干個模式串詢問。有些可以重疊匹配,有些不能重疊匹配。對於每個詢問求在匹配文字**現的次數 。

題目思路:

可重複匹配的串很簡單,就直接跑ac自動機。

對於不重疊匹配的串,貪心的能匹配就匹配。對映到ac自動機上就是當當前節點節點x上一次匹配的位置與現在匹配的位置之差 大於等於 該匹配串的長度時,就能夠完成不重疊即可。挺水一道題.

#include

using

namespace std;

const

int maxn =

6e5+5;

const

int maxm =

1e5+4;

char tmp[8]

;int n , ans[maxm]

, last[maxm]

, flag[maxm]

, pos[maxm]

;char s[maxm]

;namespace ac

}int add (

char

* s)

return u;

} queue<

int>q;

void build (

)else}}

}void ask (

char

*t)}

}return;}

}int

main()

ac::

build()

; ac::

ask(s)

;printf

("case %d\n"

,++t)

;for

(int i =

1; i <= m ; i++

)printf

("%d\n"

, ac::cnt[flag[i]

][pos[i]])

;printf

("\n");

}return0;

}

AC自動機專題

ac自動機兩大題型 查詢字串 建立有向圖dp 常數較大串數較少需要矩陣快速冪 ac自動機學習 18.10.1 hdu2222 keywords search 給定n個單詞和1個句子,求句子中不同單詞的個數 includeusing namespace std const int max 1e6 5 ...

ac自動機 匹配最長字首 多模匹配 AC自動機

精確的字串匹配演算法有 單模匹配演算法,比如,kmp bm演算法等 和 多模匹配演算法,比如,wu manber ac演算法等。ac演算法 aho corasick 是kmp演算法向多模式串情形的擴充套件,該演算法使用一種特殊的自動機,即ac自動機。ac自動機由一組模式串p生成,是trie的擴充套件...

ac自動機 匹配最長字首 高階 AC自動機詳解

今天我們來介紹一點高階的知識 ac自動機。ac自動機是什麼呢?是不是用了這個演算法,不管什麼題目都會自動ac呢?別做夢啦 ac自動機,是aho corasick automaton的簡稱,該演算法在1975年產生於貝爾實驗室,是著名的多模匹配演算法。ac自動機是對字典樹演算法的一種延伸,是字串中運用...