码迷,mamicode.com
首页 > 其他好文 > 详细

hiho 第2周 Trie树(字典树)

时间:2018-09-05 21:40:31      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:i++   typedef   tac   技术分享   sum   query   col   display   splay   

裸字典树。AC自动机前缀技能

技术分享图片
 1 #include <set>
 2 #include <map>
 3 #include <queue>
 4 #include <deque>
 5 #include <stack>
 6 #include <cmath>
 7 #include <cstdio>
 8 #include <vector>
 9 #include <string>
10 #include <cstring>
11 #include <fstream>
12 #include <iostream>
13 #include <algorithm>
14 using namespace std;
15 
16 #define eps 1e-8
17 #define PI acos(-1.0)
18 #define INF 0x3f3f3f3f
19 #define FAST_IO ios::sync_with_stdio(false)
20 
21 typedef long long LL;
22 const int N=1000000+10;
23 int trie[N][26],sum[N],tot;
24 char s[20];
25 
26 void Insert(){
27     int root=0;
28     int len=strlen(s);
29     for(int i=0;i<len;i++){
30         int id=s[i]-a;
31         if(!trie[root][id]) trie[root][id]=++tot;
32         sum[trie[root][id]]++;
33         root=trie[root][id];
34     }
35 }
36 
37 int Query(){
38     int root=0;
39     int len=strlen(s);
40     for(int i=0;i<len;i++){
41         int id=s[i]-a;
42         if(!trie[root][id]) return 0;
43         root=trie[root][id];
44     }
45     return sum[root];
46 }
47 
48 int main(){
49     int n,m;
50     scanf("%d",&n);
51     for(int i=1;i<=n;i++){
52         scanf("%s",s);
53         Insert();
54     }
55     scanf("%d",&m);
56     for(int i=1;i<=m;i++){
57         scanf("%s",s);
58         printf("%d\n",Query());
59     }
60     return 0;
61 }
View Code

 

hiho 第2周 Trie树(字典树)

标签:i++   typedef   tac   技术分享   sum   query   col   display   splay   

原文地址:https://www.cnblogs.com/ehanla/p/9593925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!