for循环赋0怎么写?
查看原帖
for循环赋0怎么写?
723253
Typical_typhoon楼主2024/5/26 08:31

code:

#include<bits/stdc++.h>
#define int long long

using namespace std;
const int N=2*1e6+10;
int tr[N][62];
int cnt[N];
string s;
int n,q;
int p,idx,l,j;
void insert(string s){
	p=0;
	for(int i=0;s[i];i++){
		if(s[i]>='0'&&s[i]<='9')j=s[i]-'0';
			else if(s[i]>='A'&&s[i]<='Z')j=s[i]-'A'+10;
				else j=s[i]-'a'+36;
		if(!tr[p][j])tr[p][j]=++idx;
		p=tr[p][j];
		cnt[p]++;
	}
}
int query(string s){
	p=0;
	for(int i=0;s[i];i++){
		if(s[i]>='0'&&s[i]<='9')j=s[i]-'0';
			else if(s[i]>='A'&&s[i]<='Z')j=s[i]-'A'+10;
				else j=s[i]-'a'+36;
		if(!tr[p][j])return 0;
		p=tr[p][j];
	}return cnt[p];
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int T;
	cin>>T;
	while(T--){
		cin>>n>>q;
		while(n--){
			cin>>s;
			insert(s);
		}
		while(q--){
			cin>>s;
			cout<<query(s)<<"\n";
		}
		for(int i=0;i<=100000;i++){
			cnt[i]=0;
			for(int j=0;j<=61;j++){
				tr[i][j]=0;
			}
		} 
		idx=0;
	}
	
	return 0;
}

是memset直接T#2#3#4#5,for循环,范围开大了超时,开小了WA

2024/5/26 08:31
加载中...