• 字符串哈希


    字符串哈希前缀和

    ULL get(int l, int r)
    {
        return h[r] - h[l - 1] * p[r - l + 1];
    }
    int main()
    {
        cin >> n >> m >> str + 1;
        p[0] = 1;
        for(int i = 1; i <= n; i ++ ){
            p[i] = p[i - 1] * P;
            h[i] = h[i - 1] * P + str[i];
        }
    View Code

    普通哈希

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int mod=5009;
    struct p{
        int to,nxt;
    }d[50009];int head[50009],cnt=1;
    bool add(int x)
    {
        int now=(x%mod+mod)%mod;
        for(int i=head[now];i;i=d[i].nxt)
            if(d[i].to==x)    return false;
        d[cnt].to=x,d[cnt].nxt=head[now];
        head[now]=cnt++;
        return true;
    }
    int main()
    {
        int t,n;
        cin>>t;
        while(t--)
        {
            cin>>n;
            cnt=1;
            memset(d,0,sizeof(d));memset(head,0,sizeof(head));
            for(int i=1;i<=n;i++)
            {
                int x;scanf("%d",&x);
                if(add(x))    printf("%d ",x);
            }
            cout<<endl;
        }
        return 0;
    }
    View Code

    字符串哈希

    溢出哈希

    #include <bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ull;
    ull base=131;//131进制
    ull a[10010];//hash后的数组
    int n,ans=1;
    ull hashs(string s)
    {
        int l=s.length();
        ull he=0;
        for(int i=0;i<l;i++)
            ans=ans*base+(ull)s[i];//溢出相当于取模
        return ans&0x7fffffff;    
    } 
    int main()
    {
        scanf("%d",&n);
        string s;
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            a[i]=hashs(s);
        }
        sort(a+1,a+1+n);
        for(int i=2;i<=n;i++)
            if(a[i]!=a[i-1])
                ans++;
        cout<<ans;
    }
    View Code

    双模数哈希

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef unsigned long long ull;
    ull base=131;
    struct data
    {
        ull x,y;
    }a[10010];
    char s[10010];
    int n,ans=1;
    ull mod1=19260817;
    ull mod2=19660813;
    ull hash1(char s[])
    {
        int len=strlen(s);
        ull ans=0;
        for (int i=0;i<len;i++)
            ans=(ans*base+(ull)s[i])%mod1;
        return ans;
    }
    ull hash2(char s[])
    {
        int len=strlen(s);
        ull ans=0;
        for (int i=0;i<len;i++)
            ans=(ans*base+(ull)s[i])%mod2;
        return ans;
    }
    bool comp(data a,data b)
    {
        return a.x<b.x;
    }
    main()
    {
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
        {
            scanf("%s",s);
            a[i].x=hash1(s);
            a[i].y=hash2(s);
        }
        sort(a+1,a+n+1,comp);
        for (int i=2;i<=n;i++)
            if (a[i].x!=a[i-1].x || a[i-1].y!=a[i].y)
                ans++;
        printf("%d
    ",ans);
    }
    View Code
  • 相关阅读:
    react-native运行iOS真机、模拟器命令
    如何在RN插件iOS部分添加framework文件
    fatal error: module map file '/Users/z/Library/Developer/Xcode/DerivedData/sometest-cnjreghvqrsixrehofwrnercfpei/Build/Products/Debug-iphoneos/YogaKit/YogaKit.modulemap' not found 1 error generated.
    ERROR | attributes: Missing required attribute `homepage`.
    数据交互一
    JSP__第1章 动态网页开发基础
    第9章 表单校验
    第8章 使用JQuery操作DOM
    第7章 jQuery中的事件与动画
    第6章 jQuery选择器
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12520916.html
Copyright © 2020-2023  润新知