蒟蒻 字典樹學習總結

2021-10-08 21:25:38 字數 1213 閱讀 6318

又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。

根節點不包含字元,除根節點外每乙個節點都只包含乙個字元;

從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串;

每個節點的所有子節點包含的字元都不相同。

串的快速檢索

給出n個單詞組成的熟詞表,以及一篇全用小寫英文書寫的文章,請你按最早出現的順序寫出所有不在熟詞表中的生詞。

在這道題中,我們可以用陣列列舉,用雜湊,用字典樹,先把熟詞建一棵樹,然後讀入文章進行比較,這種方法效率是比較高的。

「串」排序

給定n個互不相同的僅由乙個單詞構成的英文名,讓你將他們按字典序從小到大輸出

用字典樹進行排序,採用陣列的方式建立字典樹,這棵樹的每個結點的所有兒子很顯然地按照其字母大小排序。對這棵樹進行先序遍歷即可。

最長公共字首

對所有串建立字典樹,對於兩個串的最長公共字首的長度即他們所在的結點的公共祖先個數,於是,問題就轉化為當時公共祖先問題。

#include

using

namespace std;

const

int max_node =

1000000+10

;const

int charset =26;

int trie[max_node]

[charset]=;

int color[max_node]=;

int k =1;

void

insert

(char

*w) p = trie[p]

[c];

} color[p]=1

;}intsearch

(char

*s)return color[p]==1

;}intmain()

while

(q--

)return0;

}

蒟蒻 區間dp學習總結

例題 p1063 能量項鍊 p3205 hnoi2010 合唱隊 區間dp,顧名思義,在區間上dp,大多數題目的狀態都是由區間 類似於dp l r 這種形式 構成的,就是我們可以把大區間轉化成小區間來處理,然後對小區間處理後再回溯的求出大區間的值,主要的方法有兩種,記憶化搜尋和遞推。memset d...

蒟蒻 區間dp學習總結

例題 p1063 能量項鍊 p3205 hnoi2010 合唱隊 區間dp,顧名思義,在區間上dp,大多數題目的狀態都是由區間 類似於dp l r 這種形式 構成的,就是我們可以把大區間轉化成小區間來處理,然後對小區間處理後再回溯的求出大區間的值,主要的方法有兩種,記憶化搜尋和遞推。memset d...

蒟蒻 樹形dp學習總結

樹形dp,即基於樹的結構進行dp 一般來說樹形dp在設狀態轉移方程時都可以用f i 表示i這顆子樹怎麼怎麼樣的最優解,實現時一般都是用子樹更新父親 即從下向上更新 那麼首先應該考慮的是乙個乙個子樹的更新父親還是把所有子樹都算完了在更新父親?這就要因題而異了,一般來說有兩種情況 1.需要把所有子樹的資...