2 条题解
-
0
注意到要维护在哪里出现过且不能重复,所以用 map 套 set。
代码:
#include<bits/stdc++.h> using namespace std; map<string,set<int>> mp; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ int num; cin>>num; for(int j=1;j<=num;j++){ string s; cin>>s; mp[s].insert(i); } } int m; cin>>m; for(int i=1;i<=m;i++){ string s; cin>>s; if(!mp.count(s))cout<<"\n"; else{ for(auto v:mp[s]){ cout<<v<<" "; } cout<<"\n"; } } return 0; } -
0
#include <bits/stdc++.h> using namespace std; map<string, set<int>> a; string st; int main() { //freopen("a.in", "r", stdin);freopen("a.out", "w", stdout); int n; scanf("%d", &n); a.clear(); for(int i=1; i<=n; i++) { int m; scanf("%d", &m); for(int j=1; j<=m; j++) { cin >> st; a[st].insert(i); } } int q; scanf("%d", &q); while(q--) { cin >> st; for(auto i:a[st]) { printf("%d ", i); } printf("\n"); } return 0; }
- 1
信息
- ID
- 1887
- 时间
- 2000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 93
- 已通过
- 36
- 上传者