hdu 1251:统计难题[【trie树】||【map】
统计难题
注意:本题只有一组测试数据,处理到文件结束.
#include <cstdio>
#include <malloc.h>
#include <cstring>
#include <algorithm>
using namespace std; char s[];
struct node{
int cnt;
node *next[]; //该节点的所有子节点
void init(){ //初始化该节点
cnt=;
for(int i=;i<;i++)
next[i]=NULL;
}
};
void insert(node *root,char *s){
node *p =root ,*now;
for(int i=;s[i];i++){
int tmp=s[i]-'a';
if(p->next[tmp]==NULL){ //如果该节点为空,则创建一个新的节点
p->next[tmp]=new node;
p=p->next[tmp];
p->init();
}
else p=p->next[tmp]; //如果该节点不空,则继续向下插入
p->cnt++; //以该节点结尾的前缀个数+1
}
}
int find(node *root,char *s){
node *p=root;
for(int i=;s[i];i++){
int tmp=s[i]-'a';
p=p->next[tmp];
if(!p)return ; //如果遇到不满足的节点,就直接结束
}
return p->cnt;
}
int main(){
node *root=new node;
root->init();
while(gets(s)&&strlen(s))
insert(root,s);
while(gets(s))
printf("%d\n",find(root,s));
return ;
}
trie树数组实现:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int N = 1e6+;
int trie[N][]; //trie[now][next]代表第一次遍历到该节点的序号
int num[N]={},pos=;
void Insert(char *str){
int now=;
for(int i=;str[i];i++){
int next=str[i]-'a';
if(!trie[now][next])trie[now][next]=++pos; //如果没有遍历过该节点,就给该节点赋值(相当于给trie树创建一个节点)
now=trie[now][next];
num[now]++; //该前缀的数量+1
}
}
int Search(char *str){
int now=;
for(int i=;str[i];i++){
int next=str[i]-'a';
if(!trie[now][next])return ; //只要一找到不符合的节点,就直接返回0
now=trie[now][next]; //当前节点继续向下匹配
}
return num[now];
}
int main(){
char str[];
while(gets(str)&&strlen(str))
Insert(str);
while(gets(str))
printf("%d\n",Search(str));
return ;
}
map做法
#include <cstdio>
#include <string>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std; int main()
{
string s, str[];
int cur = ;
map<string, int>mapp;
while (getline(cin, s) && s[] != '\0') //注意是用这个来判断空行,首先一定要用getline读入,其次是s[0]=='\0'时表示是空行
{
string ss;
for (int i = ; i <=s.length(); i++) {
ss = s.substr(, i); //获得字符串s中从第0位开始的长度为i的字符串
mapp[ss]++;
}
}
while (cin >> s)
{
printf("%d\n", mapp[s]);
}
return ;
}
hdu 1251:统计难题[【trie树】||【map】的更多相关文章
- HDU - 1251 统计难题(trie树)
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部 ...
- hdu 1251 统计难题(trie树入门)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- HDOJ/HDU 1251 统计难题(字典树啥的~Map水过)
Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...
- hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)
统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submis ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- hdu 1251 统计难题 trie入门
统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...
- HDU 1251 统计难题(Trie)
统计难题 [题目链接]统计难题 [题目类型]Trie &题解: Trie的模板题,只不过这题坑点在没给数据范围,改成5e5就可以过了,用的刘汝佳蓝书模板 &代码: #include & ...
- 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 统计难题 这道题唯一的 ...
随机推荐
- windows钩子函数
一 什么时候用到钩子?(when)Windows操作系统是建立在事件驱动的消息处理机制之上,系统各部分之间的沟通也都是通过消息的相互传递而实现的.通常情况下,应用程序只能处理当前进程的消息,如果需要对 ...
- JavaScript学习 - 基础(二) - 基础类型/类型转换
基础类型 - 数字类型(Number) 1.最基本的数据类型 2.不区分整型数值和浮点型数值 3.所有数字采用64位浮点格式存储,相当于Java和C语言中double格式 4.能表示的最大值 +- 1 ...
- 2018-2019-2 网络对抗技术 20165227 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165227 Exp2 后门原理与实践 (1)例举你能想到的一个后门进入到你系统中的可能方式? 接收邮件的方式 (2)例举你知道的后门如何启动起来(win及l ...
- Linux CentOS 服务器搭建与初始化配置图文详解
这几天对服务器兴趣贼为浓厚,在虚拟机上装了一个CentOS7玩了玩,遇到过很多问题,比如网卡驱动设置,不能ping 等等问题,然后掏钱买个ECS搭服务器玩玩,下面就开始谢谢我的心路历程吧. 首先 买服 ...
- 【Eclipse】Eclipse中打开cmd窗口和terminal窗口
在IDEA的时候可以直接使用terminal打开类似于cmd窗口的功能,于是想着在eclipse也使用类似的功能. 1.Eclipse打开类似于cmd窗口的功能.(DOS) 1.window——> ...
- sqlplus连接远程数据库
方式一:简易连接,不用进行网络配置,其实就是tnsname.ora文件 命令:sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba] 示例:sqlplus ...
- 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)
[转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...
- 【转】深入浅出JMS(一)--JMS基本概念
摘要 The Java Message Service (JMS) API is a messaging standard that allows application components bas ...
- BOvW简介
原文地址:http://blog.csdn.net/ddreaming/article/details/52894379 BOW (bag of words) 模型简介 Bag of words模型最 ...
- art 校准时设备端操作
(1)准备所需文件art.ko 和 nart.out (2)配置设备的IP地址(例如:192.168.2.122),使之能与本地PC通信 (3)上传文件到设备 cd /tmp tftp -g -r ...