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词典中其他单词逐步添加一个字母组成.若其中有多个可行的答案,则返回答案中字典序最 ...
随机推荐
- DDD随笔-Axon
1. 命令处理程序从存储库中检索域对象(聚合)并执行它们的方法来更改它们的状态.这些聚合通常包含实际的业务逻辑,因此负责维护自己的状态.聚合的状态变化导致产生领域事件.领域事件和聚合形成领域模型. 2 ...
- ASP.NET 使用alert弹出对话框后,CSS样式失效,字体变大的解决方法
protected void ASPxButton2_Click(object sender, EventArgs e) { //Response.Write("<script> ...
- Phabricator代码审核Audit用户指南
作者: shaneZhang 分类: 互联网技术 发布时间: 2015-07-04 13:37 概览 Phabricator支持两种代码审查工作流:“review”(提交前审查)和 “audit”(提 ...
- JEECG-P3首个开源插件诞生!CMS网站插件 Jeecg-p3-biz-cms1.0版本发布!
Jeecg-P3-Biz-Cms ( JEECG 首个微服务插件,支持小程序的CMS系统) 是基于JEECG-P3 微服务框架开发的CMS建站系统,可轻量级集成进jeecg系统,定制各类网站模板, ...
- maven的环境变量配置
一: 首先下载maven, 下载地址:http://maven.apache.org/download.html 打开这个连接:选择File下面的apache-maven-3.2.1-bin.zip链 ...
- 高德地图 API 计算两个城市之间的距离
1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...
- jquery 设计的扩展---初级
1. 写一个构造函数G,调用G 时,返回G上的fn 对象的init() 的实例 2.设置G.fn 的指向,使用G.fn 与G.prototype指向同一个对象 2.1 重写G.prototype 对象 ...
- 手工获取AWR报告
AWR(Automatic Workload Repository)报告常用于Oracle数据库性能分析.熟练解读AWR报告有助于快速分析Oracle性能问题.下面主要描述如何手工获取AWR报告. 操 ...
- JAVAWEB 一一 fmt标签 和日期插件
fmt标签 效果 操作: ①导入标签 <%@ taglib uri=httpjava.sun.comjspjstlfmt prefix=fmt %> ②标签这么写 <td>& ...
- JAVAWEB 一一 SpringMVC(注解)
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...