1 条题解

  • 0
    @ 2025-10-8 16:56:02
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int id, ch[N][26], ed[N];
    char str[N];
    void ins(char *s)
    {
        int p=0;
        for(int i=0;s[i];i++)
        {
            int j=s[i]-'a';
            if(!ch[p][j])ch[p][j]=++id;
            p=ch[p][j];
        }
        ed[p]++;
    }
    int query(char *s)
    {
        int p=0, ret=0;
        for(int i=0;s[i];i++)
        {
            int j=s[i]-'a';
            if(!ch[p][j]) return ret;
            p=ch[p][j];
            ret+=ed[p];
        }
        return ret;
    }
    int main()
    {
        int n, m;scanf("%d%d", &n, &m);
        id=0;memset(ch, 0, sizeof(ch));memset(ed, 0, sizeof(ed));
        for(int i=1;i<=n;i++)
        {
            scanf("%s", str);
            ins(str);
        }
        for(int i=1;i<=m;i++)
        {
            scanf("%s", str);
            printf("%d\n", query(str));
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1281
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    224
    已通过
    64
    上传者