codevs 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
題目連結:codevs 4189 字典
題解:字典樹模板題
AC的C語言程式碼:
#include<stdio.h>
#include<string.h>
#define N 600005
int trie[N][26];
int tot;
void insert(char *s,int rt)
{
int i;
for(i=0;s[i];i++){
int x=s[i]-'a';
if(!trie[rt][x])
trie[rt][x]=++tot;
rt=trie[rt][x];
}
}
int find(char *s)
{
int i,rt=0;
for(i=0;s[i];i++){
int x=s[i]-'a';
if(!trie[rt][x])
return 0;
rt=trie[rt][x];
}
return 1;
}
int main()
{
int n,m;
char s[20];
tot=0;
scanf("%d",&n);
while(n--){
scanf("%s",s);
insert(s,0);
}
scanf("%d",&m);
while(m--){
scanf("%s",s);
if(find(s))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
相關文章
- 字典樹
- Trie樹,字典樹
- 字典樹(Trie)
- 字典樹學習
- 字典樹專題
- 字典樹的應用
- 字典樹(字首樹)簡單實現
- 資料結構-字典樹資料結構
- 一些“字典樹”典
- 字典樹及其C++實現C++
- 資料結構之樹( 線段樹,字典樹)資料結構
- 雙陣列字典樹(Double Array Trie)陣列
- P8306 【模板】字典樹
- 字典
- 【字串演算法】字典樹詳解字串演算法
- InnoDB資料字典--字典表載入
- 字串形式的列表,字典轉列表,字典字串
- AC自動機+字典序+樹狀陣列陣列
- Swift,字典Swift
- 字典案例
- 四、字典
- iOS 字典轉陣列,陣列轉字典iOS陣列
- bzoj3439: Kpm的MC密碼(主席樹+DFS序+字典樹)密碼
- Oracle 資料字典和資料字典檢視Oracle
- 資料字典
- 黑客字典II黑客
- 調整字典
- python-字典-如何取出字典中的所有值Python
- 什麼是字典?Python字典是可變的嗎?Python
- 資料字典簡介和資料字典命中率
- 根據字典中值得大小,對字典中的項排序排序
- ThinkCMF資料字典
- MySQL資料字典MySql
- python-字典Python
- Python dict(字典)Python
- Python羅技字典Python
- Redis中的字典Redis
- python 字典排序Python排序