我是dp菜。。而且這是第一次寫ac自動機,以前ac自動機只是停留在理論階段,雖然寫過幾次trie,但是這樣完整的ac自動機還是第一次寫。其實ac自動機就是乙個樹形kmp,fail指標都那麼像(其實kmp裡頭我叫p陣列,並且我現在還不會擴充套件kmp,只會樸素kmp和字尾陣列,所以我是字串菜,很多東西都不會呢)。
題目大意:
給你n個字母,用這些字母組成長度為m的字串,並且這些字串中不能包含以下k個字串。求總共有多少種方法。
簡略題解:
構建一棵ac自動機,然後dp,f[i,ctree[j].son[k]]=sum,然後由於結果很大要用壓位高精。額,還有這題最sb的是要讀字元而不是字串,要不然就shax地re掉,多虧了cai0715神牛,偲哥威武。。
附**:
poj 1625 AC自動機 動歸 大數加法
題意 給出乙個字符集v和p個模式串 長度小於10 問由這個字符集中字元組成的長度為n的且不包含任意乙個模式串的字串有多少個?字符集大小,n 50,p 10 思路 先將p個模式串建立ac自動機,標記好危險節點 flag陣列 然後動歸來求 dp i j 表示長度為i且最後在節點j的字串個數 節點j必為安...
POJ1625 AC自動機 DP 大數
題解 跑一遍ac自動機,後直接在上面dp一維表示字元長度二維表示處於那個結點最後標記一下那些位置是危險結點不要轉移過去即可,由於這題資料很大又沒有取膜所以要用大數相加 include include include include includeusing namespace std const i...
poj 1625 dp 大數 ac自動機
題意 在乙個國家當中,給你乙個詞彙書,你可以用裡面所有的字母拼湊出乙個單詞來,但是在這個國家當中存在一些禁用的單詞,那麼現在問你在不違反規則的情況下,你能盡可能的多拼湊出相應的單詞來。那麼也就是說拼湊的單詞當中不能夠出現禁用的單詞的字段。後面看到網上教程當中的dp狀態轉移,傻眼了。這都可以。dp i...