求教 为什么会RE了
查看原帖
求教 为什么会RE了
346853
_lyx_楼主2020/7/31 14:46

第一次将数组的范围开到了10e5就RE了
第二次开到10e6就AC了?
不是n\leq1000吗QAQ

原本RE的代码
#include <stdio.h>

using namespace std;

const int N = 100010;

int son[26][N], m, n, cnt[N], idx;
char str[N];

void insert(char str[])
{
    int p = 0;

    for(int i = 0; str[i]; i ++)
    {
        int u = str[i] - 'a';
        if(!son[u][p]) son[u][p] = ++ idx;
        p = son[u][p];
    }

    cnt[p] ++;
}

int query(char str[])
{
    int p = 0;

    for(int i = 0; str[i]; i ++)
    {
        int u = str[i] - 'a';
        if(!son[u][p]) return 0;
        p = son[u][p];
    }

    return p;
}

int main()
{
    scanf("%d",&n);
    for (int i = 0; i < n; i ++)
    {
        scanf("%s",str);
        insert(str);
    }
    scanf("%d",&m);
    for(int i = 0; i < m ; i ++)
    {
        scanf("%s",str);
        int p = query(str);
        if(cnt[p] > 0) printf("OK\n"), cnt[p] -= 2;
        else if(cnt[p] == 0) printf("WRONG\n");
        else if(cnt[p] < 0) printf("REPEAT\n");
    }

    return 0;
}
数据点情况

数据点

真心虚心求教orz
难道是哪里的数组越界了QAQ

2020/7/31 14:46
加载中...