样例对了,自己写了几个样例也对了但是提交全错
查看原帖
样例对了,自己写了几个样例也对了但是提交全错
832977
Submerge69楼主2024/8/11 16:43
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
int s[N][30];
int cnt[N];
int q,idx;

int getnum(char c){
	return c-'a';
}

void insert(string temp){
	int p=0;
	int size=temp.size();
	for(int i=0;i<size;i++){
		int u=getnum(temp[i]);
		if(!s[p][u]) s[p][u]=++idx;
		p=s[p][u];
	}
	cnt[p]++;
	return ;
}

int check(string temp){
	int num=0;
	int p=0;
	int size=temp.size();
	for(int i=0;i<size;i++){
		int u=getnum(temp[i]);
		//num+=cnt[p];
		p=s[p][u];
		num+=cnt[p]; 
	}
	//num+=cnt[p]; 
	return num;
}

int main(){
	string temp;
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>temp;
		insert(temp);
	}
	for(int i=1;i<=m;i++){
		cin>>temp;
		cout<<check(temp)<<endl;
	}
	return 0;
}
2024/8/11 16:43
加载中...