为何 Too short on line 1.?
查看原帖
为何 Too short on line 1.?
952115
zhyn楼主2024/8/2 18:09

样例过了,提交后全WA,且Too short on line 1.

测评

#include<iostream>
#include<string>
#include<cstring>
#define maxn 100005
using namespace std;
int t;
int n,q;
string s;
int tot=0,ans=0;
int trie[maxn][100];
int rec[maxn];

int check(char s){
	if(s>='a'&&s<='z'){
		return s-'a';
	}
	else if(s>='A'&&s<='Z'){
		return s-'A'+26;
	}
	else{
		return s-'0'+52;
	}
}

void insert(string s){
	int u=0;
	int len=s.size();
	for(int i=0;i<len;i++){
		int a=check(s[i]);
		if(trie[u][a]==0){
			trie[u][a]=++tot;
		}
		u=trie[u][a];	
		rec[u]++;
	}

}

int find(string s){
	int u=0;
	int len=s.size();
	for(int i=0;i<len;i++){
		int a=check(s[i]);
		if(trie[u][a]==0){
			return 0;
		}
		u=trie[u][a];
	}
	return rec[u];
}

void init(){
	tot=0;
	for(int i=0;i<=maxn;i++){
		rec[i]=0;
		for(int j=1;j<=100;j++){
			trie[i][j]=0;
		}
	}
	
} 

int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&q);
		init(); 
		for(int i=1;i<=n;i++){
			cin>>s;
			insert(s);
		}
		for(int i=1;i<=q;i++){
			cin>>s;
			int sum=find(s);
			printf("%d\n",sum);
		}
	}
	
	
	
	
	return 0;
}
2024/8/2 18:09
加载中...