哈希 Hash

· · 算法·理论

\text{Hash}:

\text{Hash} 的特性:

没错!是玄学!但是非常好用!堪称赌狗的胜利!!

\text{P3370} 【模板】字符串哈希:

#include<bits/stdc++.h>
using namespace std;

typedef unsigned long long ULL;
const int P = 131;
ULL v[10005];

ULL value(string s)
{
    ULL ans=s[0];
    for(int i=1; i<s.size(); i++) ans = ans*P + s[i];
    return ans;
}

int main()
{
    int n;
    cin >> n;
    for(int i=1;i<=n;i++)
    {
        string s;
        cin >> s;
        v[i] = value(s);
    }

    sort(v+1, v+n+1);
    int ans = 0;
    for(int i=1; i<=n; i++)
        if(v[i] != v[i+1]) ans ++;
    cout << ans;
    return 0;
}

求子串哈希