求调qwq,#3#4#5TLE,调出来CSP一
查看原帖
求调qwq,#3#4#5TLE,调出来CSP一
941580
ilmex楼主2024/8/9 08:00
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
int T,n,m,g[N][62],t[N],l,u,v,c=1,f;
char s[N];
int main(){
	scanf("%d", &T);
	while(T--){
		scanf("%d%d", &n, &m);
		for(int i=1; i<=n; i++){
			scanf("%s", s);u=1;l=strlen(s);
			for(int j=0; j<l; j++){
				if(s[j]>='a'&&s[j]<='z')v=s[j]-'a';
				else if(s[j]>='A'&&s[j]<='Z')v=s[j]-'A'+26;
				else v=s[j]-'0'+52;
				if(!g[u][v])g[u][v]=++c;
				u=g[u][v];t[u]++;
			}
		}
		while(m--){
			scanf("%s", s);u=1;f=0;l=strlen(s);
			for(int i=0; i<l; i++){
				if(s[i]>='a'&&s[i]<='z')v=s[i]-'a';
				else if(s[i]>='A'&&s[i]<='Z')v=s[i]-'A'+26;
				else v=s[i]-'0'+52;
				if(!g[u][v]){
					f=1;
					break;
				}
				u=g[u][v];
			}
			printf("%d\n", f?0:t[u]);
		}
		for(int i=1; i<=c; i++){
			for(int j=0; j<62; j++)g[i][j]=0;
			t[i]=0;
		}
	}
	return 0;
}
2024/8/9 08:00
加载中...