hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 50524 Accepted Submission(s): 17827
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana
band
bee
absolute
acm
ba
b
band
abc
Sample Output
2
3
1
0
Author
Ignatius.L
Recommend
Ignatius.L | We have carefully selected several similar problems for you: 1075 1247 1671 1298 1800
/**
算法:字典树 说明:
在字典树模板的基础上要将插入时候的每一步都进行 p->cnt ++
其他与字典树原模板一致
**/
核心代码:
struct node
{
node *next[];
int cnt;
node()
{
cnt = ;
memset(next, , sizeof(next));
}
}; node *root = new node(); int my_find(char *s)
{
node *p = root;
int i, k, len = strlen(s);
for (i = ; i < len; ++ i)
{
k = s[i] - 'a';
if (p->next[k] == NULL) return ;
p = p->next[k];
}
return p->cnt;
} void my_insert(char *s)
{
node *p = root;
int i, k, len = strlen(s);
for (i = ; i < len; ++ i)
{
k = s[i] - 'a';
if (p->next[k] == NULL)
p->next[k] = new node();
p = p->next[k];
p->cnt ++;
}
return ;
}
C/C++代码实现(AC):
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring> using namespace std; int flag = , len; char temp[]; struct node
{
node *next[];
int cnt;
node()
{
cnt = ;
memset(next, , sizeof(next));
}
}; node *root = new node(); int my_find(char *s)
{
node *p = root;
int i, k, len = strlen(s);
for (i = ; i < len; ++ i)
{
k = s[i] - 'a';
if (p->next[k] == NULL) return ;
p = p->next[k];
}
return p->cnt;
} void my_insert(char *s)
{
node *p = root;
int i, k, len = strlen(s);
for (i = ; i < len; ++ i)
{
k = s[i] - 'a';
if (p->next[k] == NULL)
p->next[k] = new node();
p = p->next[k];
p->cnt ++;
}
return ;
} int main()
{
while (gets(temp))
{
if (temp[] == NULL)
{
flag = ;
continue;
} if (!flag)
my_insert(temp);
else
printf("%d\n", my_find(temp));
}
}
hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)的更多相关文章
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- HDOJ/HDU 1251 统计难题(字典树啥的~Map水过)
Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...
- hdu 1251 统计难题 字典树第一题。
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- hdu 1251 统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- HDU 1251 统计难题 字典树大水题
今天刚看的字典树, 就RE了一发, 字典树原理还是很简单的, 唯一的问题就是不知道一维够不够用, 就开的贼大, 这真的是容易MLE的东西啊, 赶紧去学优化吧. HDU-1251 统计难题 这道题唯一的 ...
- HDU 1251 统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- HDU 1251统计难题 字典树
字典树的应用. 数据结构第一次课的作业竟然就需要用到树了!!!这不科学啊.赶紧来熟悉一下字典树. 空间开销太大T T #include<cstdio> #include<cstrin ...
- hdu -1251 统计难题(字典树水题)
http://acm.hdu.edu.cn/showproblem.php?pid=1251 建树之后 查询即可. G++提交 ME不知道为什么,c++就对了. #include <iostre ...
- HDU 1251 统计难题 (字符串-Trie树)
统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...
随机推荐
- [NOIp2014] luogu P2312 解方程
题目描述 已知方程∑i=0naixi=0\sum_{i=0}^{n}{a_ix^i}=0i=0∑naixi=0求该方程在 [1,m][1,m][1,m] 内的整数解. Solution 有一个秦九 ...
- [Luogu4550] 收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- kubernetes kubelet组件中cgroup的层层"戒备"
cgroup是linux内核中用于实现资源使用限制和统计的模块,docker的风靡一时少不了cgroup等特性的支持.kubernetes作为容器编排引擎,除了借助docker进行容器进程的资源管理外 ...
- 百万年薪python之路 -- 面试之葵花宝典
关于for面试题: for i in "alex": pass print(i) 结果: x 关于字符串的面试题: s = "给章超印倒一杯卡布奇洛" s[:: ...
- kafka里的一些管理脚本
kafka-server-start脚本 ------启动kafka server kafka-server-stop脚本 ------关闭kafka server kafka-topics脚本 -- ...
- C语言文件输入/输出 ACM改进版(用freopen函数方便检验)
这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen FILE * freopen ( const char * filename,const char * mo ...
- C# .NET .NET Framework .NET CORE 等的关系简介
2019新的一年,祝大家新年快乐,工作生活一帆风顺,心想事成!诸事大吉! 这篇文章是我今年的第一篇博客,主题是:C# .NET .NET Framework .NET CORE 等这些名词之 ...
- js数组及动态插入节点数据
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [考试反思]1031csp-s模拟测试95:优势
假的三首杀.因为交文件所以他们都不往OJ上交. 假装是三首杀吧.嗯. 然而昨天还是没有AK.好像说是按照64位评测机的评测结果为准. 但是联赛省选的机子好像都是32位的?也就是和我们正在用的一致. 所 ...
- NOIP的模板--考前复习
距离NOIP还有25天 可以去放弃一些巨难得题目去搞一些模板了 -------在校老师的原话 一·快排 虽然可以手打,最好用STL,里面有很多优化,会快很多 #include<iostream& ...