用了hash+map,最后一个点MLE,求助一下
查看原帖
用了hash+map,最后一个点MLE,求助一下
264548
Tangent233楼主2020/11/1 20:02
#include<bits/stdc++.h>
using namespace std;
map <unsigned long long,short> tex[10010];
unsigned long long hash1(string a)
{
    unsigned long long ans=0;
    for(int i=0;i<a.length();i++) ans+=ans*131+a[i];
    return ans;
}
string a;
int main()
{
    ios::sync_with_stdio(false);
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    {
        int f;cin>>f;
        for(int i1=1;i1<=f;i1++)
        {
            cin>>a;
            unsigned long long sy=hash1(a);
            tex[i][sy]++;
        }
    }
    int k;cin>>k;
    while(k--)
    {
        cin>>a;
        unsigned long long sy1=hash1(a);
        for(int i=1;i<=n;i++) if(tex[i][sy1]!=0) cout<<i<<' ';
        cout<<endl;
    }
    return 0;
}

空间应该比map<string,int>要优很多才对

2020/11/1 20:02
加载中...