hdu 1251 简单字典树
2015-09-15 22:12
435 查看
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 25689 Accepted Submission(s): 10493
[align=left]Problem Description[/align]
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
[align=left]Input[/align]
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
[align=left]Output[/align]
对于每个提问,给出以该字符串为前缀的单词的数量.
[align=left]Sample Input[/align]
banana band bee absolute acm ba b band abc
[align=left]Sample Output[/align]
2 3 1 0
#include<bitset> #include<map> #include<vector> #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<stack> #include<queue> #include<set> #define inf 0x3f3f3f3f #define mem(a,x) memset(a,x,sizeof(a)) using namespace std; typedef long long ll; typedef pair<int,int> pii; inline int in() { int res=0;char c; while((c=getchar())<'0' || c>'9'); while(c>='0' && c<='9')res=res*10+c-'0',c=getchar(); return res; } const int N=1000010; char a[12]; struct trie { int next[27]; int num; void init() { mem(next,-1); num=0; } }trie ; int total; void insert() { int n=strlen(a); int now=0,tmp,next; for(int i=0;i<n;i++) { tmp=a[i]-'a'; next=trie[now].next[tmp]; if(next==-1) { next=++total; trie[next].init(); trie[now].next[tmp]=next; } trie[now].num++; now=next; } trie[now].num++; } int query() { int n=strlen(a); int now=0,next,tmp; for(int i=0;i<n;i++) { tmp=a[i]-'a'; next=trie[now].next[tmp]; if(next==-1) return 0; now=next; } return trie[now].num; } int main() { total=0; trie[0].init(); while(gets(a)) { if(strcmp(a,"")==0)break; insert(); } while(gets(a)) { printf("%d\n",query()); } return 0; }
相关文章推荐
- 数据结构面试题1.2.6-Top K算法详细解析——百度面试题
- 使用Htmlhelper,创建文本框TextBox
- 苹果MAC系统下JAVA_HOME环境变量配置
- Objective-C 基础知识之(十): OC中的排序方法
- 收集的一个响应式基于bootstrap3的Color Admin 1.7后台模板
- 解决浮点数自动取整问题
- 赵文成 VMware Workstation nat 借助宿主机上网 (移动虚拟机需要重新添加vmdk文件)
- UVALive 6659 Dromicpalin Substrings
- 解决浮点数自动取整问题
- POJ1151Atlantis【离散化+扫描线+线段树】
- iOS学习 用代码实现界面
- axis2-1.6.2+spring3.1.4 发布 webservice 客户端调用总结
- UITableViewCell和UICollectionView的几种动画
- word
- 视频(多媒体) MediaPlayer,camera
- 格式验证、密码加密
- 第三天 音乐播放器
- Linux 内核的同步机制,第 1 部分 + 第二部分(转)
- 记一次性能优化经历
- 当心!这八类人容易被癌症盯上