re求条
查看原帖
re求条
1311900
Greeper楼主2025/2/8 11:33
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,m,k;
string a;
struct trie
{
	int trie[N][128],num=0;
	int cnt[N];
	void insert(string s)
	{
		int p=0;
		for(int i=0;i<int(s.size());i++)
		{
			int u=int(s[i]);
			if(!trie[p][u])trie[p][u]=++num;
			p=trie[p][u];
			cnt[p]++;
		}
	}
	int find(string s)
	{
		int p=0;
		for(int i=0;i<int(s.size());i++)
		{
			int u=int(s[i]);
			if(!trie[p][u])return 0;
			p=trie[p][u];
		}
		return cnt[p];
	}
};
int main()
{
	cin>>T;
	while(T--)
	{
		trie t;
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			cin>>a;
			t.insert(a);
		}
		while(m--)
		{
			cin>>a;
			cout<<t.find(a)<<endl;
		}
	}
	return 0;
}

2025/2/8 11:33
加载中...