BZOJ 3555 Ctsc2014 企鹅QQ Hash
2014-11-06 14:05
393 查看
题目大意:给定n个不相同的字符串,问有多少对字符串只差一个字母
枚举每个只差一个字母的位置,取除这个字符以外的哈希值判断即可
枚举每个只差一个字母的位置,取除这个字符以外的哈希值判断即可
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 30300 #define BASE 149 using namespace std; typedef unsigned long long ll; int n,k,ans; ll sum[M][210],power[210]; char s[210]; ll a[M]; void Calculate(int pos) { int i; for(i=1;i<=n;i++) a[i]=sum[i][k]-sum[i][pos]*power[k-pos]+sum[i][pos-1]*power[k-pos+1]; sort(a+1,a+n+1); int cnt; for(i=1;i<=n;i++) { if(i==1||a[i]!=a[i-1]) cnt=-1; cnt++; ans+=cnt; } } int main() { int i,j; cin>>n>>k; scanf("%*d"); power[0]=1; for(i=1;i<210;i++) power[i]=power[i-1]*BASE; for(i=1;i<=n;i++) { scanf("%s",s+1); for(j=1;j<=k;j++) sum[i][j]=sum[i][j-1]*BASE+s[j]; } for(i=1;i<=k;i++) Calculate(i); cout<<ans<<endl; }
相关文章推荐
- [BZOJ3555] [Ctsc2014]企鹅QQ(Hash)
- bzoj 3555: [Ctsc2014]企鹅QQ (hash)
- BZOJ3555: [Ctsc2014]企鹅QQ(字符串hash)
- [BZOJ3555][Ctsc2014]企鹅QQ(hash)
- [bzoj3555][Ctsc2014]企鹅QQ(hash)
- BZOJ 3555 [ctsc 2014] 企鹅QQ (hash)
- 【BZOJ 3555】【CTSC 2014】企鹅QQ【hash】
- BZOJ 3555: [Ctsc2014]企鹅QQ hash
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
- bzoj 3555: [Ctsc2014]企鹅QQ hash
- 【BZOJ3555】[Ctsc2014]企鹅QQ【Hash】
- bzoj3555: [Ctsc2014]企鹅QQ hash
- bzoj 3555: [Ctsc2014]企鹅QQ hash
- bzoj3555 [Ctsc2014]企鹅QQ(hash+枚举)
- BZOJ 3555 CTSC 2014 企鹅QQ Hash
- BZOJ 3555: [Ctsc2014]企鹅QQ( hash )
- 【bzoj3555】[Ctsc2014]企鹅QQ 字符串hash
- BZOJ 3555 [Ctsc2014]企鹅QQ - Hash
- BZOJ3555 [Ctsc2014]企鹅QQ 【hash】
- 【BZOJ 3555】 [Ctsc2014]企鹅QQ|hash