字符串hash求助90分
查看原帖
字符串hash求助90分
169422
vеctorwyx楼主2020/10/17 20:04

求问 这题p附什么值能过啊?

改了好几个数都过不了

    #include<bits/stdc++.h>
    #define int long long
    #define p 100000000000007
    #define q 99820000044353
    using namespace std;
    int n;
    struct node
    {
        int dat,num,id;
    }b[2000001];
    char a[2001];
    bool cmp(node x,node y)
    {
        return x.dat==y.dat?x.num==y.num?x.id<y.id:x.num<y.num:x.dat<y.dat;
    }
    int ans[20000010],m;
    signed main()
    {
    //	freopen("P2580_9.in","r",stdin);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a;
            int t=strlen(a);
            for(int j=0;j<t;j++)
            {
                b[i].dat=(b[i].dat*p+a[j])%q;
            }
            b[i].num=1;
        }
        cin>>m;
        for(int i=n+1;i<=n+m;i++)
        {
            cin>>a;
            int t=strlen(a);
            for(int j=0;j<t;j++)
            {
                b[i].dat=(b[i].dat*p+a[j])%q;
            }
            b[i].num=2;
            b[i].id=i-n;
        }
        sort(b+1,b+1+n+m,cmp);
        for(int i=1;i<=n+m;i++)
        {
    //		cout<<b[i].dat<<" "<<b[i].num<<endl;
            if(b[i].dat!=b[i-1].dat&&b[i].num==2&&b[i-1].num==1)
            ans[b[i].id]=1;
            else if(b[i].dat==b[i-1].dat&&b[i].num==2&&b[i-1].num==1)
            ans[b[i].id]=2;
            else if(b[i].dat==b[i-1].dat&&b[i].num==2&&b[i-1].num==2)
            ans[b[i].id]=3;
            else if(b[i].num==2&&b[i-1].num==2)
            ans[b[i].id]=1;
        }
        for(int i=1;i<=m;i++)
        cout<<(ans[i]==1 ? "WRONG\n" : ans[i]==2 ?"OK\n":"REPEAT\n");
    //	cout<<ans<<endl;
    }
    ```
2020/10/17 20:04
加载中...