TOJ3097: 单词后缀 (字典树 or map瞎搞)
传送门 (<---可以点击的~)
时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte
描述
有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里面找出某个后缀的单词个数。
输入
输入有多组数据。
每组第一行输入n,m,0<=n,m<=100000,
第二行到n+1行:输入单词,每个单词仅有小写英文字母组成,长度不超过10。
第n+2行到n+m+1行,输入要找的单词后缀。
输出
在n个单词里面找出输入单词后缀的单词个数,然后输出。每个数据与数据之间换行。
样例输入
6 3
someone
everyone
outside
inside
somebody
nobody
one
side
body
样例输出
2
2
2
思路:既然是求后缀个数,把字符串倒一倒就变求前缀个数了,然后就是写字典树。这题的话,map瞎搞也是能过的,耗时在800MS左右(感觉还是老老实实字典树吧~)
拿来练字典树模板的。
字典树代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long LL;
char str[];
struct note{
note* nxt[];
int sum;//保存出现个数
note(){
sum = ;
memset(nxt,,sizeof(nxt));
}
}a[];
void insert(note *root,char s[]){
note *p = root;
int i = ;
while(s[i]){
int j = s[i++] - 'a';
if(p->nxt[j] ==NULL){
p->nxt[j] = new note();
}
p = p->nxt[j];
(p->sum) ++;//在构建的时候直接把当前结点的sum+1 说明出现过后缀
}
}
int search(note *root ,char s[]){
note *p = root;
int i = ;
while(s[i]){
int j = s[i++]-'a';
if(p->nxt[j] == NULL)return ;
p = p -> nxt[j];
}
return p -> sum;
}
int main(){
int n,m;
while(~scanf("%d %d",&n,&m)){
note * root = new note();
while(n--){
scanf("%s",str);
strrev(str);
insert(root,str);
}
while(m--){
scanf("%s",str);
strrev(str);
printf("%d\n",search(root,str));
}
}
return ;
}
map代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include <sstream>
#define LL long long
using namespace std;
map<string,int>ma;
int main(){
int n,m;
string s;
char str[];
while(~scanf("%d%d",&n,&m)){
ma.clear();
while(n--){
cin>>s;
reverse(s.begin(),s.end());
while(s.size()>){
ma[s]++;
s.erase(s.size()-);
}
}
while(m--){
scanf("%s",str);strrev(str);
printf("%d\n",ma[str]);
}
}
}
TOJ3097: 单词后缀 (字典树 or map瞎搞)的更多相关文章
- BZOJ 4236: JOIOJI map瞎搞
分别记录J,O,I,的个数 cnt[char][i] 表示处理到第i位,char的个数 显然当且仅当 cnt[J][i] - cnt[O][i] == cnt[J][j-1] - cnt[O][j-1 ...
- BestCoder Round #92 1001 Skip the Class —— 字典树 or map容器
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1001 题解: 1.trie树 关 ...
- HDU-1251 统计难题,字典树或者map!
统计难题 很久就看过这个题了,但不会~~~不会~~ 题意:给出一张单词表,然后下面有若干查询,每次给出一个单词,问单词表中是否存在以这个单词为前缀的单词,输出数量.本身也是自身的前缀.只有一组数据! ...
- poj 2503 Babelfish(字典树或map或哈希或排序二分)
输入若干组对应关系,然后输入应该单词,输出对应的单词,如果没有对应的输出eh 此题的做法非常多,很多人用了字典树,还有有用hash的,也有用了排序加二分的(感觉这种方法时间效率最差了),这里我参考了M ...
- POJ2945(Find the Clones)--字典树,map
题意:给你n个规定长度的单词,问你其中出现了1次的单词,出现两次的单词...出现n次单词分别有多少个. 当然这题map也能过,但是这里介绍字典树的做法. 首相对于n个单词存入树中,当然建树过程中遇到一 ...
- hdu1251 字典树or map
一道字典树的题,不过看起来用map更为简单 传送门 题意: 给出一堆字符串构成一个字典,求字典里以某字符串为前缀的字符串有几个 思路: 输入字符串时把字符串的前缀全部存进map并标记次数 查询时直接输 ...
- HihoCoder1366 逆序单词(字典树)
逆序单词 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在英文中有很多逆序的单词,比如dog和god,evil和live等等. 现在给出一份包含N个单词的单词表,其中每 ...
- hdu2072 单词数 字典树
字典树裸题 #include<stdio.h> #include<string.h> ][]; ]; int cnt; int ans; void Insert(char *w ...
- Java实现 LeetCode 720 词典中最长的单词(字典树)
720. 词典中最长的单词 给出一个字符串数组words组成的一本英语词典.从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成.若其中有多个可行的答案,则返回答案中字典序最 ...
随机推荐
- DOS 和 DDOS 攻击
<一>: ICMP 协议 01: 是什么 => 互联网信心控制协议. Internet Control Message Protocol 02: 干什么 => 用于实现链路连通 ...
- 浅析USB之设备枚举
当一个USB设备插入主机后,会有以下活动: 配上状态图
- 浅谈如何避免内存泄漏(out of memory)
1.在涉及使用Context时,对于生命周期比Activity长的对象应该使用Application的Context.凡是使用Context优先考虑Application的Context,当然它并不是 ...
- django 之Paginator
Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签.这个类叫做Pagination,其定义位于 django/core/paginator.py 中. p ...
- spark遇到的错误1-内存不足
原来的代码: JavaRDD<ArticleReply> javaRdd = rdd.flatMap(new FlatMapFunction<String, ArticleReply ...
- MOBA项目问题记录
1,动态变化的文本,使用较多时,耗时大,原因:只要字符串发生改变就会重绘,原理:每个字符的宽度不一样 项目中使用了网上写的一个文本控件,大概类型UGUI的东西,实现了字符缓存,绘制过的字符就不会再重建 ...
- git 每次push都需要输入用户和密码
git remote -v origin https://github.com/userName/xx.git (fetch) origin https://github.com/userName/x ...
- 使用karma做多浏览器的UI测试
avalon1.6开发得差不多,这次使用先进的开发理念进行开发,比如模块化,单元测试什么... ui测试是重要的一环,之前用阿里的totoro,但打开浏览器不方便.于是从webdrieverio, n ...
- Python模块和类.md
模块的定义 代码的层次结构 对于python的层次结构一般为包->模块 包也就是文件夹,但是文件夹下必须有文件"init.py"那么此文件夹才可以被识别为包."in ...
- GIS案例学习笔记-ArcGIS整图大图出图实例教程
GIS案例学习笔记-ArcGIS整图大图出图实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 通过出图比例尺(1:2000),地图范围测算图纸大小. 图 ...