首页 > 其他分享 >P3879 [TJOI2010] 阅读理解(水题)

P3879 [TJOI2010] 阅读理解(水题)

时间:2024-01-24 17:34:18浏览次数:29  
标签:短文 水题 cin P3879 生词 TJOI2010 mp str include

[TJOI2010] 阅读理解

题目描述

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

输入格式

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

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

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

输出格式

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

样例 #1

样例输入 #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% 的数据, 1 ≤ M ≤ 10^3

对于 100% 的数据,$1 ≤ M ≤ 10^41 ≤ N ≤ 10^3

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

每个测试点时限 2 秒。

感谢@钟梓俊添加的一组数据。

过程

绿题水题,这道题数据应该比较简单,map+vector直接过,如果有大佬有易懂的字典树做法,欢迎解答

AC Code

// Problem: 
//     P3879 [TJOI2010] 阅读理解
//   
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3879
// Memory Limit: 125 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<iostream>
#include<algorithm>
//#include<cstdio>
#include<map>
#include<vector>
#include<cstring>
#define ll long long 
#define endl '\n'
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>(b);i--)
using namespace std;
map<string,vector<int>>mp;
void insert(string str,int index){
	if(mp.find(str)==mp.end()||find(mp[str].begin(),mp[str].end(),index)==mp[str].end()){
		mp[str].push_back(index);
	}
}
int main(){
	//ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int n,m;string str;
	cin>>n;
	rep(i,1,n){
		cin>>m;
		while(m--){
			cin>>str;
			insert(str,i);			
		}
	}
	cin>>m;
	while(m--){
		cin>>str;
		if(mp.find(str)==mp.end())cout<<endl;
		else{
			for(auto item:mp[str]){
				cout<<item<<" ";
			}
			cout<<endl;
		}
	}
	return 0; 
} 


标签:短文,水题,cin,P3879,生词,TJOI2010,mp,str,include
From: https://www.cnblogs.com/Illuminated/p/17985191

相关文章

  • P3879 TJOI2010 阅读理解
    P3879TJOI2010阅读理解基本想法开一个map组成的数组,然后每篇文章分配一个map。查找的时候在每次都跑一遍。显然MLE了。改进既然如此,录入的时候直接把单词出现对应的文章编号存起来就行,就是开一个map<string,vector<int>>。但是同一篇文章会出现多个单词,需要去重,不......
  • 每日水题记录(洛谷)
    每日水题记录(洛谷)只记录红橙题,因为\(\ge\)橙不算很水的题。\(2023.11.9\)P1012[NOIP1998提高组]拼数\(75\)分代码直接把每个数字用字符串输入,然后按字典序排序。原因:不能直接按字典序排序,寄。#include<iostream>#include<algorithm>#include<cmath>#include<c......
  • 日记,兼水题乱做,兼闲话瞎讲,兼厕纸,还兼了点其他的什么东西
    总想写点东西,但是写一篇博文太耗时间了,就写点小玩意罢2023/10/1CF1662D一个神秘构造题。首先要注意到操作可逆,还要注意到字母B有特殊性质,更要注意到题目中给的操作可以转化为互换相邻字母A和字母B位置。主要考察注意力......
  • 洛谷 P5218 无聊的水题 II
    洛谷传送门无聊的水题。根据裴蜀定理,显然能组合出任意值的充要条件是,选出的数的\(\gcd=1\)。设\(g(i)\)为在\(1\simn\)中选出若干个数使得它们\(\gcd=i\)的方案数,\(f(i)\)为在\(1\simn\)中选出若干个数使得它们\(\gcd\)是\(i\)的倍数的方案数。我们有:\[......
  • 2023.8 水题记录
    集训回来之后做题频率下来了.1.CF1856DMoreWrong这场CF场上只写出来ABD(主要卡B的证明上了),什么水平?90%交互=binarysearch(暴论)2.CF1851GVladandtheMountains是我没见过的操作.学到了.3.CF1856CToBecomeMax考试的时候没看.很简单.4.CF1270G......
  • 2023.7 水题记录
    一天天就会做板子题和水题/oh如果只写了啊?那说明我认为这个题过于厉害.1.P5459[BJOI2016]回转寿司前缀和之后在权值线段树上查询.2.P8862「KDOI-03」还原数据倒序考虑操作之后贪心,用线段树维护.3.P4247[清华集训2012]序列操作选\(c\)个数加起来这个东西是......
  • uva 579 ClockHands(几何+水题)
                     uva579ClockHandsThemedievalinterestinmechanicalcontrivancesiswellillustratedbythedevelopmentofthemechanicalclock,theoldestofwhichisdrivenbyweightsandcontrolledbyaverge,anoscillatingarmengagin......
  • 海亮 7.24 水题选讲
    海亮7.24水题选讲TheMaximumPrefix我们设定一个状态\(f_{i,j}\)表示这个序列的\([i+1,n]\)区间的最大前缀和为\(j\),这个序列的期望得分。转移为\(f_{i,j}=f_{i-1,j+1}\timesp_i+f_{i-1,\max\left(j-1,0\right)}\times\left(1-p_i\right)\)。第一个整式表示第\(i\)......
  • 20230701水题选做
    CF1676D题意给定一个无根树,点从\(1\)到\(n\)编号。你需要给每个点分配一个正整数权值\(w_i\)。定义一个节点为好节点,当且仅当其权值等于所有相邻节点的权值之和。请最大化好节点的个数,并且在好节点个数最大的前提下最小化所有节点的权值和。分析我们先考虑一种特殊情况,......
  • P5719 水题
    https://www.luogu.com.cn/problem/P5719唠唠:别看这题很水,且只要求保留小数点后一位,倘若用float而不是double的话就无法AC,洛谷评测则只有40分。所以一定要用double!总结:能用double就别用floatCode`#includeincludeincludeincludeincludeincludeincludeusingnamespaces......