首页 > 其他 > 详细

[CTSC2014]企鹅QQ

时间:2019-02-02 12:35:14      阅读:164      评论:0      收藏:0      [点我收藏+]

字符串哈希

#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 << \n;
}

 

[CTSC2014]企鹅QQ

原文:https://www.cnblogs.com/skip1978/p/10348127.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!