萌新刚学字典树求助,Unaccepted100分
查看原帖
萌新刚学字典树求助,Unaccepted100分
824865
lraM41楼主2023/5/1 20:00
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
inline int read(){
	int x=0,m=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-') m=-1;
		ch=getchar();
	}
	while(isdigit(ch)) {
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*m;
}
inline void write(int x) {
	if(x<0){
		putchar('-');
		write(-x);
		return;
	}
	if(x>=10) write(x/10);
	putchar(x%10+'0');
}
int trie[N][71],tag[N],f[N];
int t,n,q,cnt;
char str[N];
int ys(char a){
   return a-'a'+26;
}
void qwq(char a[]){
   int len=strlen(a),k=0;
   for(int i=0;i<len;i++){
      if(!trie[k][ys(a[i])]) trie[k][ys(a[i])]=++cnt;
      k=trie[k][ys(a[i])];
      tag[k]++;
   } 
}
string find(char a[]){
   int len=strlen(a),k=0;
   for(int i=0;i<len;i++){
      if(!trie[k][ys(a[i])]) return "WRONG";
      k=trie[k][ys(a[i])];
   }
   f[k]++;
   if(f[k]==1) return "OK";
   return "REPEAT";
}
signed main(){
   n=read();
   while(n--) cin>>str,qwq(str);
   q=read();
   while(q--) {
      cin>>str;
      cout<<find(str)<<'\n';
   }
   return 0;
}
2023/5/1 20:00
加载中...