求助_P2580_于是他错误的点名开始了
  • 板块学术版
  • 楼主_FJqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/8/31 10:06
  • 上次更新2023/10/27 13:00:14
查看原帖
求助_P2580_于是他错误的点名开始了
755947
_FJqwq楼主2022/8/31 10:06

RE报内存引用超限,仅有30pts

#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
typedef long long ll;

int t,d,q,n,v[5000005][65];
char s[5000005];
bool vis[5000005],_end[5000005];
void insert(char str[])
{
    int p=0,len=strlen(str);
    for(int i=0;i<len;i++)
    {
        int c=str[i]-'a';
        if(!v[p][c])
            v[p][c]=++d;
        p=v[p][c];
    }
    _end[p]=1;
    return ;
}
void find(char str[])
{
    int p=0,len=strlen(str);
    for(int i=0;i<len;i++)
    {
        int c=str[i]-'a';
        if(!v[p][c])
        {
            printf("WRONG\n");
            return ;
        }
        p=v[p][c];
    }
    if(!_end[p])
    {
        printf("WRONG\n");
        return ;
    }
    if(vis[p])
        printf("REPEAT\n");
    else
        printf("OK\n"),vis[p]=1;
    return ;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%s",s),insert(s);
    scanf("%d",&q);
    for(int i=1;i<=q;i++)
        scanf("%s",s),find(s);
}
2022/8/31 10:06
加载中...