题目链接:https://www.luogu.org/problemnew/show/P3879

我先说一句:

我永远都喜欢StellaSTL


这个题,很明显就是

trie树

hash

map+vector


思路:

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

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

于是乎= =这就是最暴力的想法。

接下来我们利用一个桶来去重就完成了题目里的要求。(我会说我是因为没看见这个要求第一次提交爆零嘛qaq)


Code:

#include <map>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
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);//vector的压入操作。我每一个单词就是一个vector。
}
}
cin>>m;
for(int i = 1; i <= m; i++)
{
cin>>s;
memset(cnt,0,sizeof(cnt));//cnt就是去重的桶。每用一次输出不同的查询要清零。
for(int j = 0; j < a[s].size(); j++)//a[s].size()是vector自动返回其长度的函数。
if(cnt[a[s][j]] == 0)
{
cout<<a[s][j]<<" ";//我们存的就是答案所求的所出现的句子的编号,所以直接输出不多bb。而且存的时候也是按顺序所记录的。
cnt[a[s][j]]++;//别忘了用桶去重!
}
cout<<endl;
}
return 0;
}

结尾:

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

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

该手打的还是要会的。trie树还是要会的!

有什么问题交流欢迎+QQ 935145183/3203600070

【luogu P3879 [TJOI2010]阅读理解】 题解的更多相关文章

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

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

  2. 洛谷 P3879 [TJOI2010]阅读理解

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

  3. P3879 [TJOI2010]阅读理解

    \(\color{#0066ff}{ 题目描述 }\) 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. \( ...

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

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

  5. Trie树【P3879】 [TJOI2010]阅读理解

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

  6. Luogu P3879 【[TJOI2010]阅读理解】

    前言: 这个题一直有个疑问,最多一千行,每行五千字$1000\times5000=5e6$ $5e6\times26\times4\div1024\div1024\approx496Mb>125 ...

  7. LGOJ3879 TJOI2010 阅读理解

    不可否认,\(TJOI\)的这道题确实不难 为本题写博客的唯一原因就是 \(STL\)大法好!!!! Description link 不简述题意了,因为实在是简单 Solution 直接\(map& ...

  8. HTTPS强制安全策略-HSTS协议阅读理解

    https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...

  9. Codeforces#543 div2 A. Technogoblet of Fire(阅读理解)

    题目链接:http://codeforces.com/problemset/problem/1121/A 真·阅读理解 题意就是 有n个人 pi表示他们的强度 si表示他们来自哪个学校 现在Arkad ...

随机推荐

  1. mysql limit查询(分页查询)探究

    MySQL的Limit子句 LIMIT offset,length Limit子句可以被用于强制 SELECT 语句返回指定的记录数.Limit接受一个或两个数字参数.参数必须是一个整数常量.如果给定 ...

  2. mongoDB cpu飙高问题

    问题描述: 最近几天生产环境上的mongodb一直在报警,cpu飙高,其他如内存.iops.连接数.磁盘操作等都正常.通过定位业务,发现是由于mongodb的表其中一个查询未建立索引导致,110多W的 ...

  3. poj 1655 树的重心 && define注意事项

    http://blog.csdn.net/acdreamers/article/details/16905653 题意:给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果 ...

  4. 前端之CSS——CSS选择器

    一.CSS介绍 为什么需要CSS(CSS的作用)? 在没有CSS之前,我们想要修改HTML元素的样式需要为每个HTML元素单独定义样式属性,当HTML内容非常多时,就会定义很多重复的样式属性,并且修改 ...

  5. SQLAlchemy的使用---外键ForeignKey数据库创建与连接

    # 一对多建表操作 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sql ...

  6. H5新特性-----type=file文件上传

    1.语法 单文件上传:<input type="file" id="file1"/> 多文件上传:<input type="file ...

  7. 数据访问层 (DAO)

    数据持久化 持久化:将程序中的数据在瞬间状态下和持久状态间转换的机制(JDBC) 主要持久化操作:保存.删除.读取.和查找. 采用面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性. ...

  8. C#工具类之数据库连接

    一.SQL Server /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类, /// 不允许实例化,在应用时直接调用即可 /// </summary&g ...

  9. jQuery小测验

    1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() $(div:has(span) ...

  10. 使用HTML5 canvas做地图(2)瓦片以及如何计算的

    上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的. 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等. ...