HDU 1251 統計難題(字典樹水題)

2021-09-25 07:33:16 字數 1374 閱讀 2769

ignatius最近遇到乙個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). 

input

輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行代表單詞表的結束.第二部分是一連串的提問,每行乙個提問,每個提問都是乙個字串. 

注意:本題只有一組測試資料,處理到檔案結束. 

output

對於每個提問,給出以該字串為字首的單詞的數量. 

sample input

banana

band

beeabsolute

acmba

bband

abc

sample output

231

0

字典樹入門。 對節點新增乙個 sz 陣列,到達這個節點的次數。詢問的時候返回sz值即可。

ac**:

#include#define debug(x) cout << "[" << #x <<": " << (x) <<"]"<< endl

#define pii pair#define clr(a,b) memset((a),b,sizeof(a))

#define rep(i,a,b) for(int i = a;i < b;i ++)

#define pb push_back

#define mp make_pair

#define ll long long

#define ull unsigned ll

#define ls i << 1

#define rs (i << 1) + 1

#define int(t) int t; scanf("%d",&t)

using namespace std;

const int maxn = 1e6 + 10;

int trie[maxn][26];

int sz[maxn];

int k = 1; ///根節點為 0

void add(char *s)

p = trie[p][c];

++ sz[p];

// debug(sz[p]);

// debug(p);

}// ++ sz[p];

}int query(char *s)

return sz[p];

}int main()

if(!flag)

else

}return 0;

}

HDU 1251統計難題(字典樹)

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

HDU1251統計難題 字典樹

題目 problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的...

hdu 1251 統計難題 字典樹

problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師...