超绝样例!
查看原帖
超绝样例!
1499011
john_01楼主2025/2/5 21:45

已AC板

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

const int N=3e6+10;

int n;
int son[N]['z'-'0'+1],idx,cnt[N];
char str[N];

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

void query(char str[]) {
    int p=0;
    for (int i=0;str[i];i++) {
        int u=str[i]-'0';
        if (!son[p][u]) {
            printf("0\n");
            return;
        }
        p=son[p][u];
    }
    printf("%d\n",cnt[p]);
}

int main() {
    int t,q;
    scanf("%d",&t);
    while (t--) {
        scanf("%d%d",&n,&q);
        for (int i=0;i<n;i++) {
            scanf("%s",str);
            insert(str);
        }
        for (int i=0;i<q;i++) {
            scanf("%s",str);
            query(str);
        }
        memset(cnt,0,(idx+1)*sizeof(int));
        memset(son,0,(idx+1)*('z'-'0'+1)*sizeof(int));
        idx=0;
    }
    return 0;
}

2025/2/5 21:45
加载中...