如下,TLE on #11
#include<bits/stdc++.h>
using namespace std;
map<string,bool> k[1000+5];
int n;
int m;
string s;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int cnt;
cin>>cnt;
for(int j=1;j<=cnt;j++){
cin>>s;
k[i][s]=true;
}
}cin>>m;
for(int i=1;i<=m;i++){
cin>>s;
for(int j=1;j<=n;j++)
if(k[j][s])
cout<<j<<" ";
cout<<endl;
}return 0;
}
然而很神奇的是,依题意 n 最大 103, cnt最大 3×105, m最大 104,那么其复杂度最大也才 O(n×cnt),应该可以稳过的,但按照OJ的反馈应该超时了很多,是复杂度出锅了。
求助+玄关。