P3879 阅读理解

都这么大了,you这些怎么能算生词呢,难道三年级以前就有人做蓝题了吗(是我不配)

我觉得这道题出难一点点的话,可以整行读入什么的(口嗨怪)。先看题目,对于每个生词,输出他出现在了哪些文章(需要排序)。看到这里,一些常用STL的大佬应该就会眉开眼笑了 这题能蓝???,当然对于标签中Trie树之类的方法,应该还是有这个难度,这里只讲我的思路

又是字符串,又是排序的,还需要考虑一个文章中重复出现的情况,直接map套set,简单粗暴还不出错,但是时间空间应该没其他算法这么优,我运行了1.8s左右

在读入数据的时候,对于每一个字符串进行一个预处理,把他所在的文章都插入进去,因为是set,去重和排序的问题不需要我们去考虑,最后在遍历时候,注意用set遍历就行了

#include<bits/stdc++.h>
using namespace std;
int n;
map<string,set<int> > a;
string s;
int nn;
int main() {
	scanf("%d",&n);
	for(register int i=1; i<=n; i++) {
		scanf("%d",&nn);
		for(register int j=1; j<=nn; j++) {
			cin>>s;
			a[s].insert(i);
		}
	}
	scanf("%d",&nn);
	for(register int i=1; i<=nn; i++) {
		cin>>s;
		for(set<int>::iterator it=a[s].begin(); it!=a[s].end(); it++) {
			cout<<*it<<" ";
		}
		cout<<endl;
	}
	return 0;
}
posted @ 2020-06-08 20:03  Poetic_Rain  阅读(110)  评论(0编辑  收藏  举报