re求条
查看原帖
re求条
1373205
dg114514楼主2024/12/2 17:17
#include<bits/stdc++.h>
using namespace std;
template<int _l,int _r> class trie{
	#define u t[p][tmp] 
	vector<vector<int>>t;
	vector<int> cnt;
	int l,r,tot;
	public:
	trie(int n):t(n+5,vector<int>(_r-_l+10,0)),l(_l),r(_r),cnt(n+5),tot(0){}
	void insert(const string& s){
		int p=0,tmp;
		for(auto i:s){
			tmp=i-l;
			if(!u)u=++tot;p=u;
			cnt[p]++;
		}
	}
	void clear(){t.clear(),cnt.clear(),tot=0;}
	int find(const string& s){
		int p=0,tmp;
		for(auto i:s){
			tmp=i-l;
			if(!u)return 0;p=u;
		}
		return cnt[p];
	}
};
signed main(){
//	cin.tie(0)->sync_with_stdio(false);
	trie<'0','z'> t(200005);
	int T,n,q;
	cin>>T;
	string s;
	while(T--){
		cin>>n>>q;
		while(n--)cin>>s,t.insert(s);
		while(q--)cin>>s,cout<<t.find(s)<<"\n";
		t.clear(); 
	}
}
2024/12/2 17:17
加载中...