map集合——阅读理解(洛谷 P3879)
题目选自洛谷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)相关推荐
- 洛谷P3879 [TJOI2010] 阅读理解 题解
洛谷P3879 [TJOI2010] 阅读理解 题解 题目链接:P3879 [TJOI2010] 阅读理解 题意: 英语老师留了 NNN 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节 ...
- Trie树【洛谷P3879】 [TJOI2010]阅读理解
P3879 [TJOI2010]阅读理解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入输出 ...
- 洛谷P3879 [TJOI2010] 阅读理解 哈希Hash解法
题目描述: 英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入格式 第一行为整数 N ,表示短文篇数, ...
- Java中Map集合如何理解(四)——精简
目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...
- Java_Collection集合与Map集合的理解与应用
集合 概述:可以存储多个数据的容器 集合和数组的区别: 相同点:都可以存储多个数组 不同点: 数组中可以存多个数据,但是不能自由的实现数据的新增和删除操作 集合中除了可以存储多个数据,还可以自由的实现 ...
- 集合位置(洛谷 P1491)
集合位置 题目描述 每次有大的活动,大家都要在一起"聚一聚",不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺 ...
- P3879 [TJOI2010]阅读理解 [STL]
P3879 [TJOI2010]阅读理解 我永远喜欢STL 显然要用到哈希类似的东西,说到哈希我就想到了map. 但是map怎么存一串数字还不MLE啊?说到存一串数字还不MLE我就先到了vector. ...
- 洛谷题解——P1621 集合
题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...
- Map集合遍历的四种方式理解和简单使用
Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据 ...
最新文章
- org.apache.http.client.CircularRedirectException: Circular redirect to http://xxx问题解决
- MyBatis_1	简介
- add-apt-repository cloud-archive:liberty
- 师--链表的结点插入
- openstack安装指南_6种管理OpenStack的新指南
- UnrealEngine4 学习总结备忘
- 英语学习—每天进步一丢丢系列(一)
- 数字化转型背景下的金融交易业务中台实践
- Windows Phone 数据库并行访问【转】
- 索尼z5原生android6.0,索尼Z5怎么刷安卓6.0?索尼Z5刷安卓6.0固件包教程
- 内存数据库fastdb的使用研究报告
- JVM内置函数intrinsics简介
- php-java-net-python-爱心公益网站()计算机毕业设计程序
- python画魔法阵_半年了,这画我已经找不出什么出错的地方了,诚心请大佬们指点,我如何能更进一步?...
- Winsock出错引起的断网
- 如何将CAD文件转换为PDF格式,免费试用
- 赵光瑞:小孩想做贪官可怕在哪里
- 创业十年,静静地反思zz
- 天秤座,上帝的失误,最悲伤的星座
- Spring面试题之循环依赖与三级缓存
热门文章
- 修改系统时间导致myeclipse不能自动发布的解决方法
- 使用思科asa防火墙deny QQ农场
- css3中的渐变效果及花斑动画的实现
- HTML与XHTML区别
- 开源 协作工具_使用HackMD在开源项目上进行协作
- 美国 otc 数字货币_美国数字公共图书馆的免费藏书量是第一年的三倍
- Bootstrap3 Font Awesome 字体图标带边框的图标
- 变结构滑模控制抖振处理(1)------动态滑模法
- 计算机检索基础知识,[转载]四 计算机文献检索基础知识(原理、结构和功能)...
- oracle连接操作符,Oracle操作符,函数