hack数据咋过不了捏
查看原帖
hack数据咋过不了捏
714783
zHYLt楼主2023/1/31 16:33
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>  
//lw245266110
#include<bits/stdc++.h>
#include<cmath>
#include<algorithm>
//const int INF=99999999;
using namespace std;
map<string,int>hash2;
typedef  long long ll; 
//stack<char>s1;
//priority_queue<int>pq;
//pair<int,int>p1[200005];
//int fa[100005]; 
//int dis[1000005];
//int u[1000005];
//int v[1000005];
//int w[1000005];
/*void ford()
{
	for(int i=1;i<=n;i++)
	dis[i]=INF;
	dis[1]=0;
	for(int k=1;k<=n-1;k++)
	{
		for(int i=1;i<=m;i++)
		{
			if(dis[v[i]]>dis[u[i]]+w[i])
			dis[v[i]]=dis[u[i]]+w[i];
		}
	}
	
}*/
//const int N=2e5+10;
//int p[N];
/*int find(int x)
{
	if(x!=p[x])
	{
		p[x]=find(p[x]);
	}
	return p[x];
}*/
int q,n,t[800005][65],cnt[800005];
int idx=0;
char s[800005];
int getnum(char x)
{
	if(x>='A'&&x<='Z')
	return x-'A';
	else if(x>='a'&x<='z')
	return x-'a'+26;
	else
	return x-'0'+52;
}
void insert(char str[])
{
	int root=0;
	int len=strlen(str);
	for(int i=0;i<len;i++)
	{
		int c=getnum(str[i]);
		if(!t[root][c])
		t[root][c]=++idx;
		root=t[root][c];
	}
	cnt[root]=1;
}
int find(char str[])
{
	int root=0;
	int len=strlen(str);
	for(int i=0;i<len;i++)
	{
		int c=getnum(str[i]);
		if(!t[root][c])
		{
		  cout<<"WRONG"<<endl; 
		   break;
	    }
		root=t[root][c];
		 if(i==len-1&&cnt[root]==2)
	    cout<<"REPEAT"<<endl;
	    if(i==len-1&&cnt[root]==1)
	    {
	    	cnt[root]=2;
	    	cout<<"OK"<<endl;
		}
		/*if(cnt[root]==0)
		{
			cout<<"WRONG"<<endl;
		}*/
	}
	return cnt[root];
}
void solve()
{
	int T;
	cin>>T;
	for(int i=1;i<=T;i++)
	{
		cin>>s;
		insert(s);
	}
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>s;
		find(s);
	}
}

int main()
{
    solve();
}
// 1 2 
2023/1/31 16:33
加载中...