全部TLE和RE求调
查看原帖
全部TLE和RE求调
1142019
Mei20091011楼主2025/2/5 18:05
#include <bits/stdc++.h>

using namespace std;

unordered_map<char,int>mp;
int t,n,q,cnt[3000005],tot;
short tree[3000005][65];
void _insert(string s)
{
    int p=0;
    for(int i=0;i<s.size();i++)
    {
        char c=s[i];
        if(!tree[p][mp[c]])tree[p][mp[c]]=++tot;
        p=tree[p][mp[c]];
        cnt[p]++;
    }
    return;
}
int _find(string s)
{
    int p=0;
    for(int i=0;i<s.size();i++)
    {
        char c=s[i];
        if(!tree[p][mp[c]])return 0;
        p=tree[p][mp[c]];
    }
    return cnt[p];
}
int main()
{
    cin>>t;
    int num=0;
    for(char i='0';i<='9';i++)mp[i]=++num;
    for(char i='a';i<='z';i++)mp[i]=++num;
    for(char i='A';i<='Z';i++)mp[i]=++num;
    for(int i=1;i<=t;i++)
    {
        memset(tree,0,sizeof(tree));
        memset(cnt,0,sizeof(cnt));
        tot=0;
        cin>>n>>q;
        for(int j=1;j<=n;j++)
        {
            string s;
            cin>>s;
            _insert(s);
        }
        for(int j=1;j<=q;j++)
        {
            string s;
            cin>>s;
            cout<<_find(s)<<endl;
        }
    }
    return 0;
}

全部TLE和RE求调

2025/2/5 18:05
加载中...