#include <cstring> #include <cstdio> #define max(a,b) a>b?a:b const int mn=300005; struct Trie{ int father,fail,next[26]; void ...
傳說中的對聯算法套路題,先貼代碼,題解咕咕咕。 上聯:AC自動機fail樹dfs序建可持久化線段樹 下聯:后綴自動機next指針dag圖上跑SG函數 上聯這幾個算法學了很久了,今天才把這題做了,雖然csl說是套路題,但感覺真的很難,下聯的還差后綴自動機正在學,學好了再貼代碼。 ...
2020-10-08 23:56 0 423 推薦指數:
#include <cstring> #include <cstdio> #define max(a,b) a>b?a:b const int mn=300005; struct Trie{ int father,fail,next[26]; void ...
【可持久化線段樹】【P5826】【模板】子序列自動機 Description 給定一個序列 \(A\),有 \(q\) 次詢問,每次詢問一個序列 \(B\) 是不是 \(A\) 的子序列 Limitations 序列 \(A\) 長度不超過 \(10^5\),詢問序列長度之和不超過 ...
dfs序+線段樹,啥?如果在一棵樹上,需要你修改一些節點和查詢一些節點,如果直接dfs搜的話肯定超時,那用線段樹?樹結構不是區間啊,怎么用?用dfs序將樹結構轉化為一個區間,就能用線段樹進行維護了。 dfs序是指:每個節點在dfs深度優先遍歷中的進出棧的時間序列,記錄每個點進棧和出棧的時間點 ...
【CF666E】Forensic Examination(后綴自動機,線段樹合並) 題面 洛谷 CF 翻譯: 給定一個串\(S\)和若干個串\(T_i\) 每次詢問\(S[pl..pr]\)在\(T_l..T_r\)中出現的最多次數,以及出現次數最多的那個串的編號。 題解 好題 ...
AC自動機 AC自動機,說白了就是在trie樹上跑kmp(其實個人感覺比kmp容易理解)。是一種多匹配串,單個主串的匹配。概括來說,就是將多個匹配串構造一個trie樹,對於每個trie樹的節點構造nxt指針,最后把主串放在上面跑。 構造trie樹 和普通的trie樹構建一樣,沒有什么 ...
過程 fail指針可以說是AC自動機里最難理解的東西,怎樣更好的理解AC自動機的fail指針? 先來看一幅圖: 看這幅圖上的fail指針是怎么構造的. 樹上的詞分別是: {he,hers,his,she} 按圖所示分成3層。看到第三層,是"she",其中: 下面以"she"創建 ...
樹和AC自動機的密切相關,我想一起講完哈哈。。。看過前面博文的同學應該都知道了,AC自動機其實就是相當 ...
題目描述 給定一棵n個點的有根樹,編號依次為1到n,其中1號點是根節點。每個節點都被染上了某一種顏色,其中第i個節點的顏色為c[i]。如果c[i]=c[j],那么我們認為點i和點j擁有相同的顏色。定義depth[i]為i節點與根節點的距離,為了方便起見,你可以認為樹上相鄰的兩個點之間的距離 ...