Codevs 4189 字典(字典樹Trie)

2021-07-14 15:46:39 字數 1539 閱讀 4838

4189 字典

時間限制: 1 s

空間限制: 256000 kb

題目等級 : 大師 master

傳送門題目描述 description

最經,skyzhong得到了一本好厲害的字典,這個字典裡整整有n個單詞(1<=n<=200000)

現在skyzhong需要在字典裡查詢以某一段字母開頭的單詞

如:skyzhong想查詢a

那麼只要是a開頭的單詞就可以了

skyzhong只想知道裡面有沒有這乙個單詞(因為沒有他就不查了)

若有,請輸出yes。若沒有,請輸出no

輸入描述 input description

第一行乙個數n

第二行到第n+1行,一行乙個字串

再下一行乙個數m,表示skyzhong想要查詢的次數

接著m行,一行乙個字串,表示skyzhong想要查的東西

輸出描述 output description

共m行,若有這字串輸出yes,否則輸出no

樣例輸入 sample input

3 asd

asfdghj

asfd

3 asd

asdghj

asf

樣例輸出 sample output

yes

no yes

資料範圍及提示 data size & hint

字串只有小寫字母,且長度≤8

/*

字典樹模板(字首查詢).

查詢某個單詞的字首是否出現過

因為當查詢如字串abc是否為某個字串的字首時,

顯然以b、c、d....等不是以a開頭的字串就不用查詢了,

這樣迅速縮小查詢的範圍和提高查詢的針對性。

所以建立trie的複雜度為o(n*len),

而建立+查詢在trie中是可以同時執行的,

建立的過程也就可以成為查詢的過程,

hash就不能實現這個功能.

所以總的複雜度為o(n*len),

實際查詢的複雜度只是o(len).

*/#include

#include

#include

#define maxn 300001

#define maxm 1001

using

namespace

std;

char s[maxm];

struct data

tree[maxn];

int m,n,tot;

void add_vertex() }

tree[now].b=true;

}int find()

return0;}

return1;}

int main()

cin>>m;

memset(s,0,sizeof(s));

for(int i=1;i<=m;i++)

AC日記 字典 codevs 4189

時間限制 1 s 空間限制 256000 kb 題目等級 大師 master 題解檢視執行結果 最經,skyzhong得到了一本好厲害的字典,這個字典裡整整有n個單詞 1 n 200000 現在skyzhong需要在字典裡查詢以某一段字母開頭的單詞 如 skyzhong想查詢a 那麼只要是a開頭的單...

字典樹 與 01字典樹

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

字典樹實現 10 字典樹

字典樹就是一種樹形結構,優點是利用字串的公共字首來節約儲存空間,比如加入 abc abcd abd b bcd efg hik 構造出的字典樹如下 基本特徵 下面我們先實現乙個字典樹,假設所有單詞的字元僅僅是 a z 幷包含以下功能 void insert string word 新增word,可以...