1. 程式人生 > >AC自動機 + 矩陣優化 --- [BJOI2017]魔法咒語

AC自動機 + 矩陣優化 --- [BJOI2017]魔法咒語

ans 沒有 長度 心情 spa 失效 技術分享 兩個 怎麽

bzoj 4860 LOJ2180 洛谷P3175

[BJOI2017]魔法咒語

題目描述:

Chandra 是一個魔法天才。

從一歲時接受火之教會洗禮之後,Chandra 就顯示出對火元素無與倫比的親和力,輕而易舉地學會種種晦澀難解的法術。

這也多虧 Chandra 有著常人難以企及的語言天賦,讓她能輕松流利地說出咒語中那些極其拗口的魔法詞匯。

直到十四歲,開始學習威力強大的禁咒法術時,Chandra 才遇到了障礙。

根據火之魔法規則,禁咒的構成單位是 N 個基本詞匯。

施法時只要凝聚精神力,說出一段用這些詞語組成的長度恰好等於 L 的語言,就能釋放威力超乎想象的火法術。

過去的魔法師們總結了幾種表達起來最連貫的組合方式,方便施法者以最快語速完成法術。

但具有魔法和語言雙重天才的 Chandra 不滿足於這幾種流傳下來的禁咒,因為她可以毫無困難地說出普通人幾乎不可能表達的禁咒語句。

然而,在實際施法時,Chandra 發現有些自創禁咒念出後不但沒有預期效果,反而會使自己的精神力迅速枯竭,十分難受。

這個問題令 Chandra 萬分不解。

她大量閱讀典籍,到處走訪魔法學者,並且不顧精神折磨一次又一次嘗試新咒語,希望找出問題的答案。

很多年過去了,在一次遠古遺跡探險中,Chandra 意外闖進了火之神艾利克斯的不知名神殿。

根據巖土特征分析,神殿應該有上萬年的歷史,這是極其罕見的。Chandra 小心

翼翼地四處探索,沿著魔力流動來到一間密室。她看見密室中央懸浮著一本書籍。

在魔法保護下書籍狀況完好。精通上古語言的 Chandra 讀過此書,終於解開了多年的困惑。

禁咒法術之所以威力強大,是因為咒語借用了火之神艾利克斯的神力。

這本書裏記載了艾利克斯生平忌諱的 M 個詞語,比如情敵的名字、討厭的植物等等。

使用禁咒法術時,如果語言中含有任何忌諱詞語,就會觸怒神力而失效,施法者也一並遭受懲罰。

例如,若 ”banana” 是唯一的忌諱詞語,“an”、”ban”、”analysis” 是基本詞匯,

禁咒長度須是 11,則“bananalysis” 是無效法術,”analysisban”、”anbanbanban”是兩個有效法術。

註意:一個基本詞匯在禁咒法術中可以出現零次、一次或多次;

只要組成方式不同就認為是不同的禁咒法術,即使書寫形式相同。

謎題破解,Chandra 心情大好。

她決定計算一共有多少種有效的禁咒法術。

由於答案可能很大,你只需要輸出答案模 1,000,000,007 的結果。

輸入格式:

第一行,三個正整數 N, M, L。

接下來 N 行,每行一個只含小寫英文字母的字符串,表示一個基本詞匯。

接下來 M 行,每行一個只含小寫英文字母的字符串,表示一個忌諱詞語。

輸出格式

僅一行,一個整數,表示答案(模 \(10^{9}+7\))。

數據範圍:

技術分享圖片

對於 100%的數據,1 ≤ N, M ≤ 50,1 ≤ L ≤ \(10^{8}\),基本詞匯的長度之和不超過100,忌諱詞語的長度之和不超過 100。

保證基本詞匯不重復,忌諱詞語不重復。

AC自動機題感覺都是套路(3min秒掉好開心)

統計單詞是不是?

先來個dp狀態:\(dp(i,j)\)表示構造到第i位,再AC自動機上狀態為j的方案數

AC自動機哪裏來?

禁忌單詞是不是?不能碰到是不是?AC自動機肯定就是你了。

限定單詞?

好像不好處理,但是也沒有什麽。

原本常用dp:

\(dp(i,j)= \sum_{trans(v,c) = j} dp(i - 1,v)\)

稍微改一下:

\(dp(i,j) = \sum_{trans(v,words)} dp(i - len(words),v) \)

words就是題面中給出的構成單詞。

好像解決了???

並沒有,對於60%的數據點,dp是可以解決的。

但是對於後面的點,L過大, 但是\(len(words)\)並不大,可以考慮矩陣優化

最後20分的點怎麽辦???

把狀態抽象出來:

\(dp(i,...)= \sum dp(i-1,...) + \sum(dp(i-2,...) )\)

還是個線性遞推式,依然可以用矩陣轉移。

最終前60%數據的復雜度:O(\(L* \sum len(words)\))

後40%數據的復雜度:O(\( \sum (2 * len(words))) ^ {3} * \log L\))

代碼請等實現

AC自動機 + 矩陣優化 --- [BJOI2017]魔法咒語