统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 34909    Accepted Submission(s): 13109

Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).

 
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

注意:本题只有一组测试数据,处理到文件结束.

 
Output
对于每个提问,给出以该字符串为前缀的单词的数量.

 
Sample Input
banana
band
bee
absolute
acm
 
ba
b
band
abc
 
Sample Output
2
3
1
0
 

题目链接:HDU 1251

以前以为很高级的数据结构,原来就是一个很多后继节点的链表而已,建立过程很简单明了,不懂的话画一个多叉树就知道了……,每一次从表头*root(最近学的是链表,就用*L好了)开始找,然后如果存在就继续找直到遍历完字符串,插入和查找都是这个原理还有最好别用G++提交容易爆内存,C++就不会了

代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <sstream>
#include <cstring>
#include <bitset>
#include <string>
#include <deque>
#include <stack>
#include <cmath>
#include <queue>
#include <set>
#include <map>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
typedef pair<int,int> pii;
typedef long long LL;
const double PI=acos(-1.0);
const int N=26;
const int M=15;
struct Trie
{
Trie *nxt[N];
int cnt;
Trie()
{
CLR(nxt,0);
cnt=0;
}
};
Trie *L=new Trie();
void update(char s[])
{
int len=strlen(s);
int indx;
Trie *cur=L;
for (int i=0; i<len; ++i)
{
indx=s[i]-'a';
if(cur->nxt[indx])
{
cur=cur->nxt[indx];
++(cur->cnt);
}
else
{
Trie *one=new Trie();
++(one->cnt);
cur->nxt[indx]=one; cur=cur->nxt[indx];///新建之后还是要跳到这个新建节点的
}
}
}
int Find(char s[])
{
int len=strlen(s);
Trie *cur=L;
int indx;
for(int i=0; i<len; ++i)
{
indx=s[i]-'a';
if(!cur->nxt[indx])
return 0;
cur=cur->nxt[indx];
}
return cur->cnt;
}
char s[M];
int main(void)
{
while (gets(s)&&strcmp(s,""))
update(s); while (gets(s))
printf("%d\n",Find(s));
return 0;
}

HDU 1251 统计难题(Trie模版题)的更多相关文章

  1. HDU 1251 统计难题(Trie)

    统计难题 [题目链接]统计难题 [题目类型]Trie &题解: Trie的模板题,只不过这题坑点在没给数据范围,改成5e5就可以过了,用的刘汝佳蓝书模板 &代码: #include & ...

  2. hdu 1251 统计难题 trie入门

    统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...

  3. hdu 1251 统计难题(trie树入门)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  4. HDU - 1251 统计难题(trie树)

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).  Input输入数据的第一部 ...

  5. HDU 1251 统计难题 (Trie)

    pid=1251">统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/ ...

  6. hdu 1251 统计难题(字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 统计难题 Time Limit: 4000/2000 MS (Java/Others)    M ...

  7. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  8. hdu 1251:统计难题(字典树,经典题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  9. HDU 1251 统计难题 (字符串-Trie树)

    统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...

随机推荐

  1. mongodb初步使用

    下载安装: 下载MongoDB:http://www.mongodb.org/. 安装MongoDB:傻瓜式安装 配置: 把bin目录添加到系统环境变量 启动: 打开一个 cmd编辑框,输入: mon ...

  2. vmware安装linux.iso

    安装方法 : .进入Fedora后,在虚拟机选项栏中选VM->install vmware tools 拷贝VMware Tools.tar.gz到指定文件夹,解压缩 进入超级终端:在-> ...

  3. java call sap

    1.下载需要的jar,windows用dll,linux用so win下载地址     linux下载地址 win下载地址new 2.环境: windows -> sapjco3.dll放到wi ...

  4. 江哥的dp题a(codevs 4815)

    题目描述 Description 给出一个长度为N的序列A(A1,A2,A3,...,AN).现选择K个互不相同的元素,要求: 1.两两元素互不相邻 2.元素值之和最大 输入描述 Input Desc ...

  5. stm32——Flash读写

    stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP( ...

  6. 谈谈异步加载JavaScript

    前言 关于JavaScript脚本加载的问题,相信大家碰到很多.主要在几个点—— 1> 同步脚本和异步脚本带来的文件加载.文件依赖及执行顺序问题 2> 同步脚本和异步脚本带来的性能优化问题 ...

  7. centos下安装五笔输入法的教程

    [root@ok ~]# yum update [root@ok ~]# yum install ibus-table-chinese-wubi-haifeng 以上两步已经成功!! #yum ins ...

  8. l中断的实现

    转自:http://blog.chinaunix.net/uid-25014876-id-90740.html xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  9. DB2修改表字段

    1:删除字段非空属性 alter table XXX alter column XXX drop not null 此特性需要DB2 9.0以上的版本 2:添加字段非空属性alter table XX ...

  10. Java Hour 28 HashSet

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 28 HashSet 为查找而生 LinkedList查找效率低下, ...