題目
維護乙個字串集合,支援兩種操作:
「i x」向集合中插入乙個字串x;
「q x」詢問乙個字串在集合**現了多少次。
共有n個操作,輸入的字串總長度不超過 10^5,字串僅包含小寫英文本母。
輸入格式
第一行包含整數n,表示運算元。
接下來n行,每行包含乙個操作指令,指令為」i x」或」q x」中的一種。
輸出格式
對於每個詢問指令」q x」,都要輸出乙個整數作為結果,表示x在集合**現的次數。
每個結果佔一行。
資料範圍
1≤n≤2∗10^4
輸入樣例:
5i abc
q abc
q ab
i ab
q ab
輸出樣例:10
1
trie 樹,: 高效的儲存和查詢字串集合的資料結構。舉例是見證定義的高效的方式。
例如: 在trie中儲存一系列字串。
;// 每個節點的最多26, cnt表示 以第n個節點結尾字串的個數,idx表示索引
int son[n][26
], cnt[n]
, idx;
char str[n]
;void
insert
(char str)
cnt[p]++;
}int
query
(char str)
return cnt[p];}
intmain()
// 下面是檢查上面的陣列的
for(
int i=
0; i<
10; i++
)for
(int i=
0; i<
20; i++
) cout << cnt[i]
<<
' ';
return0;
}
son[p][t] 中記錄的是第某層節點是 t 的下標,不是深度,這裡的p是後面根據這個去定位路徑的,每乙個開始遍歷p = 0, 然後就是根據++idx 賦值,因為idx是唯一的,所以查詢的時候可以根據這個來找字串出現沒。最後遍歷到字串結尾處,記錄這個字串出現的次數。字串 Trie樹(字典樹)
關於這個字串的資料結構我就不多說什麼了,不知道的可以戳這裡.trie樹在oi中應用廣泛,時間優秀,缺點就是空間占用大。下文中我們將字符集大小稱為 k,模式串長度為p trie支援o np 建樹,o p 插入,查詢,刪除。可是如果二維陣列儲存的話,就要耗費kn 的空間,基本無法承受。空間上我們可以用指...
字串 Trie字典樹
目錄 trie字典樹 例題 1.什麼是字典樹?2.字典樹的作用及性質 3.建樹 code 效果圖 4.查詢 code 5.優勢 6.回到例題 code 7.結束語 8.練習 給出n個字串,以及m個詢問。每次詢問讀入乙個字串,求該字串是多少個字串的字首 每個字串長度小於10 2,n和m小於10 5。樣...
chenchen題解 Trie字串統計
維護乙個字串集合,支援兩種操作 1.i x 向集合中插入乙個字串x q x 詢問乙個字串在集合 現了多少次。共有n個操作,輸入的字串總長度不超過 10 5 字串僅包含小寫英文本母。輸入格式 第一行包含整數n,表示運算元。接下來n行,每行包含乙個操作指令,指令為 i xix 或 q xqx 中的一種。...