HDU - 1251 字典树模板题
Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
Output对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana
band
bee
absolute
acm ba
b
band
abc
Sample Output
2
3
1
0 字典树模板。根据我个人对字典树的理解,我认为,
void insert(char *s){
int p=;
int len=strlen(s);
for(int i=;i<len;i++)
{
int c=s[i]-'a';
if(tr[p][c]==)
{
tr[p][c]=k++;
}
p=tr[p][c];
num[p]++;
}
}
这个p,就是一个指针,指向当前字符的K值,直到指向字符串的终点(K值);K值记录加入的节点序号。num[]值(ASCLL-'a')记录以此K为终点的字符串的个数。
大致上是这么理解的,代码:
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=1e6+;
const int charset=;
int tr[maxn][charset];
int num[maxn]={};
int k=;
char s[maxn];
void insert(char *s)
{
int len=strlen(s);
int p=;
for(int i=;i<len;i++)
{
int c=s[i]-'a';
if(tr[p][c]==)
{
tr[p][c]=k++;
}
p=tr[p][c];
num[p]++;
}
}
int find(char *s)
{
int c=;
for(int i=;i<strlen(s);i++)
{
int n=s[i]-'a';
if(tr[c][n]==)
return ;
c=tr[c][n];
}
return num[c];
}
int main()
{
for(;;)
{
gets(s);
if(s[]=='\0')
break;
insert(s);
}
char ss[maxn];
while(gets(ss))
{ printf("%d\n",find(ss));
}
// cout<<find(ss)<<endl;
return ;
}
HDU - 1251 字典树模板题的更多相关文章
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
这道题题目里没有给定数据范围 我开了2005 疯狂的WA 然后开了50000, A掉 我以为自己模板理解错 然后一天没吃饭,饿得胃疼还是想着把这题A掉再去吃,谁知竟然是这样的问题,,,呵呵~~~ ...
- HDU 1251 Trie树模板题
1.HDU 1251 统计难题 Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...
- 字典树模板题(统计难题 HDU - 1251)
https://vjudge.net/problem/HDU-1251 标准的字典树模板题: 也注意一下输入方法: #include<iostream> #include<cstdi ...
- HDU 1251 统计难题(字典树模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意:给出一些单词,然后有多次询问,每次输出以该单词为前缀的单词的数量. 思路: 字典树入门题. #inc ...
- CH 1601 - 前缀统计 - [字典树模板题]
题目链接:传送门 描述给定 $N$ 个字符串 $S_1,S_2,\cdots,S_N$,接下来进行 $M$ 次询问,每次询问给定一个字符串 $T$,求 $S_1 \sim S_N$ 中有多少个字符串是 ...
- HDU 2072 - 单词数 - [(有点小坑的)字典树模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 Problem Descriptionlily的好朋友xiaoou333最近很空,他想了一件没有 ...
- hdu 1251 字典树的应用
这道题看了大神的模板,直接用字典树提交的会爆内存,用stl 里的map有简单有快 #include <iostream> #include <map> #include < ...
- P1184 高手之在一起(字典树模板题,hash算法, map)
哎,唯一值得说明的是,这道题的输入有bug 先把字典树的算法模板放一下 #include<iostream> #include<cstring> using namespace ...
- (模板)hdoj1251(字典树模板题)
题目链接:https://vjudge.net/problem/HDU-1251 题意:给定一系列字符串之后,再给定一系列前缀,对每个前缀查询以该字符串为前缀的字符串个数. 思路: 今天开始学字典树, ...
随机推荐
- 觉醒 闭包/this
两条非常重要的知识点 首先上题 var a = '322' var preview = function() { var a = '123' console.log(a, this, this.a) ...
- MySQL报错注入函数汇总及常用注入语句
版权声明:本文转载自网络内容,下面附原创链接原创链接:https://blog.csdn.net/Auuuuuuuu/article/details/91415165 常用函数 字符串连接函数,将多个 ...
- 小米百元NFC智能神器来了:必成爆款!
6月14日,小米手环4全渠道首卖,其中电商平台今日10:00开卖,线下小米之家需要顾客持本人身份证限购一台. 首销结束后,米家官微宣布,小米手环4下一轮开售时间在6月18日上午10:00,届时小米手环 ...
- 文本编辑器vim/vi——末行模式
指令格式: #vim 文件路径作用:打开指定的文件. 进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入 退出方式: a. 按下esc b. 连按2次esc键 c. 删除末行全部输入字 ...
- redis报错MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist
解决方法:通过redis-cli连接到服务器后执行以下命令: config set stop-writes-on-bgsave-error no 注意:这种方法只是忽略了问题,并没有解决问题,具体问题 ...
- Golang go-gin 注册路由
代码实现 main.go package main import ( "fmt" "github.com/jihite/go-gin-example/pkg/settin ...
- hdu 1160 上升序列 dp
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- android 开发学习3
DAO:DATA ACCESS OBJECT getApplication()和MainActivity.this 是两种不同的context,也是最常见的两种.第一种中context的生命周期与Ap ...
- 基于Ambari的WebUI部署Hive服务
基于Ambari的WebUI部署Hive服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari服务 博主推荐阅读: https://www.cnblogs.com ...
- UVA - 12107 Digit Puzzle(数字谜)(IDA*)
题意:给出一个数字谜,要求修改尽量少的数,使修改后的数字谜只有唯一解.空格和数字可以随意替换,但不能增删,数字谜中所有涉及的数必须是没有前导零的正数.输入数字谜一定形如a*b=c,其中a.b.c分别最 ...