[CTSC2014]企鹅QQ
Posted skip1978
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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 << ‘ ‘; }
以上是关于[CTSC2014]企鹅QQ的主要内容,如果未能解决你的问题,请参考以下文章