CH Round #57 - Story of the OI Class 凯撒密码

来源:互联网 发布:java 垃圾回收算法 编辑:程序博客网 时间:2024/06/06 01:53

相邻字符串hash具有唯一性

#include<cstdlib>#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<string>#include<algorithm>using namespace std;const int N=1000005;const int M=27;int f[M][M];int n;int a[N];char b[N];void solve(){for (int i=1; i<=n; i++){char s[6];scanf("%s", s); int t=0;for (int j=0; j<4; j++){t=t*26+f[s[j]-'a'+1][s[j+1]-'a'+1];}   a[t]=i;   b[t]=s[0];}for (int i=1; i<=n; i++){char s[6];scanf("%s", s);int t=0;for (int j=0; j<4; j++){t=t*26+f[s[j]-'a'+1][s[j+1]-'a'+1];}printf("%d %d\n", a[t], f[s[0]-'a'+1][b[t]-'a'+1]);}}void init(){scanf("%d", &n);for (int i=1; i<=26; i++)  for (int j=1; j<=26; j++)  {  if (j>=i) f[i][j]=j-i;  else f[i][j]=26-i+j;  }}int main(){init();solve();return 0;}


0 0
原创粉丝点击