30分求调(字典树模板题)
查看原帖
30分求调(字典树模板题)
981551
DGFLSzfd楼主2024/8/22 10:31

题目入口P2580 于是他错误的点名开始了

对了一些,WA一个点,剩下的RE,求调
明明是模板题,我照着模板打的

#include<bits/stdc++.h>
using namespace std;

int  n,m;
map<string,bool>mp;

struct trie //字典树封装模板 
{
	int nex[100000][26], cnt;
	bool exist[100000];

	void insert(char *s,int l)
	{
		int p=0;
		for (int i=0;i<l;i++)
		{
			int c=s[i]-'a';
			if(!nex[p][c]) nex[p][c]=++cnt; 
			p=nex[p][c];
		}
		exist[p]=1;
	}

	bool find(char *s,int l) 
	{
		int p=0;
		for (int i=0;i<l;i++)
		{
			int c=s[i]-'a';
			if(!nex[p][c]) return 0;
			p=nex[p][c];
		}
		return exist[p];
	}
}tt;
char s[50];
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		memset(s,0,sizeof s);
		cin>>s;int len=strlen(s);
		tt.insert(s,len);
	}
	cin>>m;
	for(int i=0;i<m;i++)
	{
		memset(s,0,sizeof s);	
		cin>>s;int len=strlen(s);
		if(tt.find(s,len)==1)
		{
			if(!mp[s])
			{
				cout<<"OK\n";
				mp[s]=1;
			}
			else cout<<"REPEAT\n";
		}else cout<<"WRONG\n";
	}
		
}
2024/8/22 10:31
加载中...