HDU 1251 统计难题(Trie模版题)

统计难题

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;
}

转载于:https://www.cnblogs.com/Blackops/p/5904583.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLServer数据库收缩相关知识笔记

1、为什么要进行数据库收缩&#xff1f;SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件&#xff0c;比如数据文件的空间分配了300MB&#xff0c;而实际上只占用了20MB空间&#xff0c;这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数…

libvirt vnc花屏_centos6.5下VNC花屏解决方法

问题描述1、FusionCompute平台搭建完成后&#xff0c;创建基于RHEL6.5 64bit版本的虚拟机&#xff0c;完成虚拟机初始安装后&#xff0c;VNC界面出现花屏&#xff0c;无法登入Redhat桌面系统2、在创建虚拟机时&#xff0c;系统安装向导配置了网络&#xff0c;在花屏界面下可以通…

enum操作--获取枚举里的最大值

一个应用系统&#xff0c;如果程序里没有任何enum的使用&#xff0c;我认为它的可读性是有待商榷的。 求枚举里的最大/最小枚举值&#xff0c; 其实是对Array进行操作&#xff1a; enum EnumTest{ddd 2,eee} var arr1 Enum.GetValues(typeof(EnumTest)); //返回值是一个Array…

吕梁离石学校计算机专业在哪里,山西吕梁计算机大专学校有哪些太重技校告诉您...

山西吕梁计算机大专学校有哪些太重技校告诉您。选择专业的***关键的因素是你自身的兴趣&#xff0c;其他只能参考&#xff0c;如果你能准确的知道自己的兴趣所在&#xff0c;未来的职业所选&#xff0c;那么只需要一招就可以吃遍天。相信我&#xff0c;一生为自己感兴趣的事情奋…

网络安全:六种常见的网络攻击手段

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

3种团队分组适应项目_分组团队竞赛活动方案

为营造新年春节期间良好的经营氛围&#xff0c;形成规范有效的服务流程&#xff0c;促进员工快乐积极向上工作&#xff0c;铸造峡市娱乐行业名牌&#xff0c;经KTV 管理人员研究制定以下分组评比竞赛方案&#xff1a;第一&#xff1a;分组办法。1、KTV主管杨海军、华磊、冯磊、…

Spring Security(18)——Jsp标签

目录 1.1 authorize 1.2 authentication 1.3 accesscontrollist Spring Security也有对Jsp标签的支持的标签库。其中一共定义了三个标签&#xff1a;authorize、authentication和accesscontrollist。其中authentication标签是用来代表当前Authentication对象的&…

e4a html文本,E4A 怎么将剪贴版中的文本 粘贴到窗口的光标处啊?求个代码

满意答案百幻蝶V木桃2017.05.20采纳率&#xff1a;49% 等级&#xff1a;8已帮助&#xff1a;1710人■如何打开剪贴板查看器 当您从某个程序剪切或复制信息时&#xff0c;该信息会被移动到剪贴板并保留在那里&#xff0c;直到您清除剪贴板或者您剪切或复制了另一片信息。“剪…

电脑技巧:七款U盘修复软件

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

cdrx8如何批量导出jpg_Coreldraw/CDR X8 存低版本打开问题 – 数码打印破图 – Coreldraw/CDR软件崩溃 – 渐变导位图角度变了...

Coreldraw/CDR X8 存低版本打开问题 – 数码打印破图 – Coreldraw/CDR软件崩溃 – 渐变导位图角度变了Coreldraw/CDR X8 存低版本打开问题各位大神&#xff0c;小弟最近安装了Coreldraw/CDR X8 &#xff0c;在设计文件时&#xff0c;会遇到给文字设计套白边&#xff0c;问题来…

[deviceone开发]-do_SlideListView的简单示例

一、简介 利用提供的SlideListVIew实现那种cell可以滑动露出底部按钮的功能 主要组件&#xff1a;do_slidelistview 二、效果图 三、相关讨论 http://bbs.deviceone.net/forum.php?modviewthread&tid269 四、相关下载 https://github.com/do-project/code4do/tree/master/…

Git:Rebase和Merge之间的区别,看完这篇文章你就懂了!

社区中长期以来一直在争论我们应该使用Merge还是Rebase。有人会说Merge更好&#xff0c;因为它保留了最完整的工作历史。其他人则认为&#xff0c;Rebase变得更整洁&#xff0c;这使审阅者的生活更轻松&#xff0c;更高效。本文将解释合并和重新设置之间的区别是什么&#xff0…

计算机b级英语翻译,英语B级考试翻译必备常用短句

英语B级考试翻译必备常用短句1. Who would say like this?谁会这样说呢&#xff1f;2. What time shall we leave?我们什么时候出发呢&#xff1f;3. We are going to play golf this Sunday.我们这个星期天要去打高尔夫球。4. Do you want to go out or stay at home?你想出…

weblogic概览下的上下文根配置_Weblogic服务下获取上下文路劲问题

问题描述&#xff1a;如果一个项目用weblogic部署的服务&#xff0c;在web_inf文件夹下只有web.xml文件&#xff0c;没有配置weblogic.xml文件时&#xff0c;这是用类.class.getClassLoader().getResource("").getPath() 该方法获取到的绝对路劲是如下&#xff1a;/…

干货:SQLServer数据库基于PowerDesigner逆向工程生成PDM文件

在日常的开发工程中&#xff0c;很多时候需要提供数据库设计文档&#xff0c;如果当时数据库设计没有采用PowerDesinger&#xff0c;到后期需要给客户提供数据库设计文档、后期项目运维就会比较麻烦&#xff0c;今天给大家介绍如何使用PowerDesigner的逆向工程生成SQLServer数据…

检查 Linux 服务器性能

如何用十条命令在一分钟内检查 Linux 服务器性能 如果你的Linux服务器突然负载暴增&#xff0c;报警短信快发爆你的手机&#xff0c;如何在最短时间内找出Linux性能问题所在&#xff1f;来看Netflix性能工程团队的这篇博文&#xff0c;看它们通过十条命令在一分钟内对机器性能问…

html 圆球的百分比,HTML5 很酷的球形器皿中水波状的进度条

CSS语言&#xff1a;CSSSCSS确定* {box-sizing: border-box;}html,body {height: 100%;}body {background-color: #1a1a1a;font-family: sans-serif;font-size: 15px;color: #ccc;}input[type"text"] {background-color: transparent;margin-top: 30px;border: 0;bor…