52分求调,前3个点靠后的几组数据WA
查看原帖
52分求调,前3个点靠后的几组数据WA
692274
hgckythgcfhk楼主2023/9/21 08:16
#include <bits/stdc++.h>
#define void inline void
#define int unsigned char
using namespace std;const unsigned N=3e6+1;int m[128];
void init(){for(int i=65;i<91;++i)m[i]=i-65,m[i+32]=i-65+26;for(int i=47;i<58;m[++i]=i+4);}
#define aa(i) memset(a[i],0,sizeof a[i]),cnt[i]=0
class tire{private:unsigned a[N][63],id=0,cnt[N];//bitset<N>ed;
	public:void ins(const string &s){register unsigned p=0;
	for(register unsigned i=0;i<s.size();++i){int c=m[s[i]];
			if(!a[p][c])a[p][c]=++id,aa(id);p=a[p][c];++cnt[p];}//ed[p]=1;
	}inline unsigned qry(const string &s){register unsigned p=0;for(int i=0;i<s.size();++i){
		int c=m[s[i]];p=a[p][c];if(p==0)return 0;}return cnt[p];}
	void clear(){aa(0);id=0;}}a;
signed main(){ios::sync_with_stdio(0);register unsigned n,q,t;cin>>t;
    init();while(t--){cin>>n>>q;while(n--){string s;cin>>s;a.ins(s);}
	while(q--){string s;cin>>s;cout<<a.qry(s)<<'\n';}a.clear();}
	
}
2023/9/21 08:16
加载中...