lpx2024 @ 2023-03-11 15:33:31
为什么求thair
会超时
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxN=2000010;
int thair[maxN][127],ed[maxN],cnt;
void Insert(string s){
int t=1;
for(int i=0;i<s.size();i++){
int p=s[i];
if(!thair[t][p]) thair[t][p]=++cnt;
t=thair[t][p];
ed[t]++;
}
}
int Query(string s){
int t=1;
for(int i=0;i<s.size();i++){
int p=s[i];
t=thair[t][p];
if(t==0) return 0;
}
return ed[t];
}
int main(){
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n,m;
cin>>n>>m;
memset(thair,0,sizeof(thair));
memset(ed,0,sizeof(ed));
cnt=1;
for(int j=1;j<=n;j++){
string s;
cin>>s;
Insert(s);
}
for(int j=1;j<=m;j++){
string s;
cin>>s;
cout<<Query(s)<<endl;
}
}
return 0;
}
234都tle
by Rosaya @ 2023-03-11 16:01:11
t 的范围是 1e5 ,你 memset 显然会 T 。
by lpx2024 @ 2023-03-12 22:08:15
@Dark_night_qwq
那要怎么办