E - Repository (字典树)
来源:互联网 发布:java内部类ppt 编辑:程序博客网 时间:2024/04/28 02:01
E - Repository (字典树)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
When you go shopping, you can search in repository for avalible merchandises by the computers and internet. First you give the search system a name about something, then the system responds with the results. Now you are given a lot merchandise names in repository and some queries, and required to simulate the process.
Input
There is only one case. First there is an integer P (1<=P<=10000)representing the number of the merchanidse names in the repository. The next P lines each contain a string (it's length isn't beyond 20,and all the letters are lowercase).Then there is an integer Q(1<=Q<=100000) representing the number of the queries. The next Q lines each contains a string(the same limitation as foregoing descriptions) as the searching condition.
Output
For each query, you just output the number of the merchandises, whose names contain the search string as their substrings.
Sample Input
20
ad
ae
af
ag
ah
ai
aj
ak
al
ads
add
ade
adf
adg
adh
adi
adj
adk
adl
aes
5
b
a
d
ad
s
Sample Output
0
20
11
11
2
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;int now;struct Tri{ int v; int now; Tri *child[26]; void Init() { v=0; now=0; for(int i=0;i<26;i++) child[i]=NULL; }}root;void CreatTri(char *str){ Tri *q=&root; while(*str!='\0') { if(q->child[*str-'a']==NULL) { q->child[*str-'a']=(Tri *)new Tri; q->child[*str-'a']->Init(); } q= q->child[*str-'a']; if(q->now!=now) { q->now=now;q->v++; } str++; }}int Find(char *str){ Tri *q=&root; while(*str!='\0') { if(q->child[*str-'a']==NULL) return 0; else q=q->child[*str-'a']; str++; } return q->v;}int main(){ char a[30]; int m,i=0; scanf("%d",&m); getchar(); while(i<m) { scanf("%s",a); now++; int len=strlen(a); for(int j=0;j<len;j++) CreatTri(a+j); i++; } scanf("%d",&m);i=0; getchar(); while(i<m) { scanf("%s",a); printf("%d\n",Find(a)); i++; } return 0;}
- E - Repository (字典树)
- hdu Repository(字典树)
- hdu2846 Repository(字典树)
- HDU-2846Repository(字典树)
- HDU 2846 Repository(字典树变形)
- HDOJ 题目2846 Repository(字典树)
- Repository(字典树,避免重复计数)
- HDU 2846 Repository(字典树)
- HDOJ 2846 Repository (字典树变形)
- HDU - 2846 - Repository(字典树)
- HDU-2846-Repository(字典树)
- hdu2846 Repository 字典树(好题)
- hdu 2846 Repository(字典树)
- hdu-2846-Repository(字典树)
- HDU 2846Repository(字典树+计数)
- hdu2846 Repository (字典树)
- hdu2846 Repository 字典树
- HDU2846 Repository 字典树
- 增加java基础——hashSet中存放对象的比较规则
- 437. Path Sum III
- 把自己常用的LATEX公式记录下来,以后就不用每次再搜了
- 通俗易懂JSONP讲解
- Android 性能优化 概念介绍
- E - Repository (字典树)
- 冒泡排序原理
- ListView中的观察者模式
- lightoj1085 - All Possible Increasing Subsequences(树状数组)
- 《CANOpen》 学习笔记3
- 用Android studio直接获取debug和release的SHA1和MD5值
- 第八周项目2——建立链串的算法库
- 【XJOI】NOIP2016提高组冲剌题1
- Node.js+webStrom 环境配置