求调教
查看原帖
求调教
754673
Jackson_Miller楼主2023/8/15 08:36
#include<bits/stdc++.h>
using namespace std;
int trie[3*114511][122],sum[114511*3],tot;
char s[3*114511];
int getchar(char x){
	if(x<='9'&&x>='0') return x-'0'+52;
	else if(x<='z'&&x>='a') return x-'a';
	else return x-'A'+26;
}
void insert(){
	int len=strlen(s);
	int root=0;
	for(int i=0;i<len;i++){
		int id=getchar(s[i]);
		if(!trie[root][id]){
			trie[root][id]=++tot;
		}
		root=trie[root][id];
		sum[root]++;
	}
}
int sch(){
	int len=strlen(s);
	int root=0;
	for(int i=0;i<len;i++){
		int id=getchar(s[i]);
		if(!trie[root][id]){
			return 0;
		}
		root=trie[root][id];
	}
	return sum[root];
}
int main(){
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>s;
		insert();
	}
	for(int i=1;i<=q;i++){
		cin>>s;
		bool f=0;
		for(int i=0;i<strlen(s);i++){
			char ch=s[i];
			s[i]='a';
			if(sch()>0){
				cout<<"YES"<<endl;
				f=1;
				break;
			}
			s[i]='b';
			if(sch()>0){
				cout<<"YES"<<endl;
				f=1;
				break;
			}
			s[i]='c';
			if(sch()>0){
				cout<<"YES"<<endl;
				f=1;
				break;
			}
			s[i]=ch;
		}
		if(f==0){
			cout<<"NO"<<endl;	
		} 
	}
}
2023/8/15 08:36
加载中...