zoukankan      html  css  js  c++  java
  • [CTSC2014]企鹅QQ

    字符串哈希

    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #include<ctime>
    #include<string>
    #include<cstdlib>
    #include<iostream>
    #include<map>
    #include<unordered_map>
    typedef unsigned long long u64;
    int n,l,s;
    u64 map1[256];
    u64 map2[256];
    inline u64 rd(){return(u64)rand()<<46^(u64)rand()<<35^(u64)rand()<<24^rand();}
    std::string str;
    std::vector<u64>v;
    int main(){
        srand(time(0));
        std::ios::sync_with_stdio(false),std::cin.tie(0);
        std::cin >> n >> l >> s;
        for(int i=0;i<256;++i){
            map1[i]=rd();
            map2[i]=rd();
        }
        u64 ans=0;
        for(int i=1;i<=n;++i){
            std::cin >> str;
            u64 hsh=0;
            for(int i=0;i<l;++i)hsh^=map1[i]*map2[str[i]];
            for(int i=0;i<l;++i)v.push_back(hsh^map1[i]*map2[str[i]]);
        }
        std::sort(v.begin(),v.end());
        for(std::vector<u64>::iterator l=v.begin(),r=v.begin();l!=v.end();){
            r=l;
            while(r!=v.end() && *l == *r)++r;
            --r;
            ans+=(u64)(r-l+1)*(r-l)/2,l=r+1;
        }
        std::cout << ans << '
    ';
    }
  • 相关阅读:
    树的遍历
    动态规划之背包问题
    Dijkstra算法
    最短路径
    关于数学公式Markdown
    子集数
    O、Θ、Ω
    AT212 P-CASカードと高橋君
    vector的使用方法
    P3512 [POI2010]PIL-Pilots 单调队列的应用
  • 原文地址:https://www.cnblogs.com/skip1978/p/10348127.html
Copyright © 2011-2022 走看看