题目选自洛谷P3879

直接用map<string,vecotr<int> > 代替这题里的trie树,注意开map的时候后面两个> >之间要有一个空格。

用vector记录每个单词出现的句子位置,每遇到一个就把该单词所出现的句子的编号压入对应的vector里。

代码应该是很短的了,同学们应该要有利用stl的意识,但不能完全依靠stl,毕竟有很多东西也是stl现在所提供不了的。

两个STL应用使代码简短了很多。然而还是那句话,天上不会掉馅饼,程序的效率还是有所下降的。然而,效率不是全部,人们宁可牺牲三倍效率用Java而不用C语言就是最好的例子(from_ Charles E Leiserson_),具体取舍要看情况。

题目描述

英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。

输入格式

第一行为整数 N ,表示短文篇数,其中每篇短文只含空格和小写字母。

按下来的 N 行,每行描述一篇短文。每行的开头是一个整数 L ,表示这篇短文由 L 个单词组成。接下来是 L 个单词,单词之间用一个空格分隔。

然后为一个整数 M ,表示要做几次询问。后面有 M 行,每行表示一个要统计的生词。

输出格式

对于每个生词输出一行,统计其在哪几篇短文中出现过,并按从小到大输出短文的序号,序号不应有重复,序号之间用一个空格隔开(注意第一个序号的前面和最后一个序号的后面不应有空格)。如果该单词一直没出现过,则输出一个空行。

输入输出样例

输入 1

3
9 you are a good boy ha ha o yeah
13 o my god you like bleach naruto one piece and so do i
11 but i do not think you will get all the points
5
you
i
o
all
naruto

输出 1

1 2 3
2 3
1 2
3
2

说明/提示

对于 30\%30% 的数据, 1≤M≤10^3 。

对于 100\%100% 的数据,1≤M≤10^4,1≤N≤10^3 。

每篇短文长度(含相邻单词之间的空格)\le 5\times 10^3≤5×103 字符,每个单词长度≤20 字符。

每个测试点时限 2 秒。

解题代码:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
const int maxn = 100001;
int n,m,num,cnt[maxn];
string s;
map<string,vector<int> >a;
int main(){std::ios::sync_with_stdio(false);//关闭同步,快很多cin>>n;for(int i=1;i<=n;i++){cin>>num;for(int j=1;j<=num;j++){cin>>s;a[s].push_back(i);}}cin>>m;for(int i=1;i<=m;i++){cin>>s;memset(cnt,0,sizeof(cnt));//去重的桶for(int j=0;j<(int)a[s].size();j++){if(cnt[a[s][j]]==0){cout<<a[s][j]<<" ";cnt[a[s][j]]++;}}cout<<endl;}return 0;
}

map集合——阅读理解(洛谷 P3879)相关推荐

  1. 洛谷P3879 [TJOI2010] 阅读理解 题解

    洛谷P3879 [TJOI2010] 阅读理解 题解 题目链接:P3879 [TJOI2010] 阅读理解 题意: 英语老师留了 NNN 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节 ...

  2. Trie树【洛谷P3879】 [TJOI2010]阅读理解

    P3879 [TJOI2010]阅读理解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入输出 ...

  3. 洛谷P3879 [TJOI2010] 阅读理解 哈希Hash解法

    题目描述: 英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入格式 第一行为整数 N ,表示短文篇数, ...

  4. Java中Map集合如何理解(四)——精简

    目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...

  5. Java_Collection集合与Map集合的理解与应用

    集合 概述:可以存储多个数据的容器 集合和数组的区别: 相同点:都可以存储多个数组 不同点: 数组中可以存多个数据,但是不能自由的实现数据的新增和删除操作 集合中除了可以存储多个数据,还可以自由的实现 ...

  6. 集合位置(洛谷 P1491)

    集合位置 题目描述 每次有大的活动,大家都要在一起"聚一聚",不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺 ...

  7. P3879 [TJOI2010]阅读理解 [STL]

    P3879 [TJOI2010]阅读理解 我永远喜欢STL 显然要用到哈希类似的东西,说到哈希我就想到了map. 但是map怎么存一串数字还不MLE啊?说到存一串数字还不MLE我就先到了vector. ...

  8. 洛谷题解——P1621 集合

    题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...

  9. Map集合遍历的四种方式理解和简单使用

    Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据 ...

最新文章

  1. org.apache.http.client.CircularRedirectException: Circular redirect to http://xxx问题解决
  2. MyBatis_1 简介
  3. add-apt-repository cloud-archive:liberty
  4. 师--链表的结点插入
  5. openstack安装指南_6种管理OpenStack的新指南
  6. UnrealEngine4 学习总结备忘
  7. 英语学习—每天进步一丢丢系列(一)
  8. 数字化转型背景下的金融交易业务中台实践
  9. Windows Phone 数据库并行访问【转】
  10. 索尼z5原生android6.0,索尼Z5怎么刷安卓6.0?索尼Z5刷安卓6.0固件包教程
  11. 内存数据库fastdb的使用研究报告
  12. JVM内置函数intrinsics简介
  13. php-java-net-python-爱心公益网站()计算机毕业设计程序
  14. python画魔法阵_半年了,这画我已经找不出什么出错的地方了,诚心请大佬们指点,我如何能更进一步?...
  15. Winsock出错引起的断网
  16. 如何将CAD文件转换为PDF格式,免费试用
  17. 赵光瑞:小孩想做贪官可怕在哪里
  18. 创业十年,静静地反思zz
  19. 天秤座,上帝的失误,最悲伤的星座
  20. Spring面试题之循环依赖与三级缓存

热门文章

  1. 修改系统时间导致myeclipse不能自动发布的解决方法
  2. 使用思科asa防火墙deny QQ农场
  3. css3中的渐变效果及花斑动画的实现
  4. HTML与XHTML区别
  5. 开源 协作工具_使用HackMD在开源项目上进行协作
  6. 美国 otc 数字货币_美国数字公共图书馆的免费藏书量是第一年的三倍
  7. Bootstrap3 Font Awesome 字体图标带边框的图标
  8. 变结构滑模控制抖振处理(1)------动态滑模法
  9. 计算机检索基础知识,[转载]四 计算机文献检索基础知识(原理、结构和功能)...
  10. oracle连接操作符,Oracle操作符,函数