bzoj3172 單詞 AC自動機

2021-07-10 01:17:27 字數 396 閱讀 1826

(感覺以前寫過。。bzoj上不去我也不知道) 跑一遍ac自動機,每乙個節點儲存一下屬於多少字串,為它的權值。然後乙個節點表示的字串在整個字典中出現的次數相當於其在fail樹中的子樹的權值的和。ac自動機不要寫掛就好了。

ac**如下:

#include#include#include#define n 1100005

using namespace std;

char s[n]; int n,a[n],h[n];

struct acam_node

a[x]=now;

} void build()

}acam;

int main()

by lych

2016.2.18

BZOJ 3172 單詞 (AC自動機)

這道題是個裸的ac自動機,但是我還是調了很久qaq。首先如果我們直接用每個單詞來匹配的,時間不是很理想。這道題要用到ac自動機的衍生物 fail樹 我也是做這道題才知道有這個東西 fail樹有這麼乙個結論 乙個字串出現的次數等於以它為根節點的fail樹的子樹中所有節點的cnt的和。根據這個結論,我們...

bzoj3172 單詞 AC自動機

有n個單詞組成了一篇文章,求每個單詞在這篇文章中出現了多少次。多個字串匹配的問題,建立ac自動機。如果某個單詞在i節點出現了,那麼在i節點fail指標所指節點也出現過。code include include using namespace std const int max n 1000005 s...

Bzoj3172 單詞(AC自動機)

time limit 10 sec memory limit 512 mb submit 5051 solved 2467 某人讀 一篇 是由許多單詞組成。但他發現乙個單詞會在 中出現很多次,現在想知道每個單詞分別在 中出現多少次。第乙個乙個整數n,表示有多少個單詞,接下來n行每行乙個單詞。每個單詞...