1个疑惑
  • 板块题目总版
  • 楼主Pan1
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/1/10 23:02
  • 上次更新2023/10/24 04:48:56
查看原帖
1个疑惑
598983
Pan1楼主2023/1/10 23:02

P3879

这个题我用map写的,一开始用的是map<string,string>处理数据,第一个string表示要查的生词,第二个string代表这个生词出现在哪些文章的标号结果一样就是过不了, 后来换成了map<string,vector >,用vector表示出现文章的标号就过了。 求指教 这是代码 第一个全WA,第二个过了。

#include<bits/stdc++.h>
using namespace std;
#define FastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
typedef unsigned long long ull;
typedef long long ll;
int t,n,m;
map<string,string>s;
string str;
int main(){
	FastIO;
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n;
		while(n--){
			cin>>str;
			s[str]+=to_string(i);
		}
	}
	cin>>m;
	while(m--){
		cin>>str;
		string v=s[str];
		//assert(v!="");
		for(unsigned int i=0;i<v.size();i++){
			//assert(5==3);
			if(i==0)cout<<v[i];
			else if(v[i]!=v[i-1])cout<<v[i];
			else continue;
			if(i!=v.size()-1)cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define FastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
typedef unsigned long long ull;
typedef long long ll;
int t,n,m;
map<string,vector<int> >s;
string str;
int main(){
	FastIO;
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n;
		while(n--){
			cin>>str;
			//s[str]+=to_string(i);
			s[str].push_back(i);
		}
	}
	cin>>m;
	while(m--){
		cin>>str;
		//assert(v!="");
		for(unsigned int i=0;i<s[str].size();i++){
			//assert(5==3);
			if(i==0)cout<<s[str][i];
			else if(s[str][i]!=s[str][i-1])cout<<s[str][i];
			else continue;
			if(i!=s[str].size()-1)cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2023/1/10 23:02
加载中...