样例不对 求调
查看原帖
样例不对 求调
766022
__pipi__楼主2024/8/7 16:38
#include<bits/stdc++.h>
#define ll long long

using namespace std;
const int N = 3e5+10;

ll trie[N][85],tot;
ll sum[N];
string s;

void add() {
	ll len=s.size(),p=0;
	for(int i=0;i<len;i++) {
		ll ch=0;
		if(s[i]>='a'&&s[i]<='z') ch=s[i]-'a';
		else if(s[i]>='A'&&s[i]<='Z') ch=s[i]-'A'+26;
		else ch=s[i]-'0'+52;
		if(!trie[p][ch]) {
			trie[p][ch]=++tot;
			p=trie[p][ch];
			sum[p]++;
		}
	}
}

ll ask() {
	ll len=strlen(s),p=0;
	for(int i=0;i<len;i++) {
		ll ch=0;
		if(s[i]>='a'&&s[i]<='z') ch=s[i]-'a';
		else if(s[i]>='A'&&s[i]<='Z') ch=s[i]-'A'+26;
		else ch=s[i]-'0'+52;
		if(!trie[p][ch]) return 0;
		p=trie[p][ch];
	}
	return sum[p];
}

void ee() {
	for(int i=0;i<=tot;i++) {
		for(int j=0;j<=255;j++) {
			trie[i][j]=0;
		}
	}
	for(int i=0;i<=tot;i++) {
		sum[i]=0;
	}
}

void work() {
	ll n,m;
	scanf("%lld",&n,&m);
	ee();
	tot=0;
	for(int i=1;i<=n;i++) {
		cin>>s;
		add();
	}
	for(int i=1;i<=m;i++) {
		cin>>s;
		printf("%lld\n",ask());
	}
}

int main() {
	int t;
	scanf("%d",&t);
	while(t--) {
		work();
	}
	return 0;
}
2024/8/7 16:38
加载中...