bzoj3409 [Usaco2009 Oct]Barn Echoes 牛棚回声

来源:互联网 发布:2016年淘宝用户人数 编辑:程序博客网 时间:2024/04/30 21:44

题目

n<=80什么鬼,其实如果n<=10000000还是可以做的,卡卡常,O(wys)233。

存两个哈希数组就好了,枚举长度判断。

#include<bits/stdc++.h>using namespace std;int n,m,mx;char s[105];unsigned long long f[2][105],tmp,x,y; int main(){    freopen("in.txt","r",stdin);    scanf("%s\n",s+1);n=strlen(s+1);    for(int i=1;i<=n;i++)f[0][i]=f[0][i-1]*23+s[i];    scanf("%s\n",s+1);m=strlen(s+1);    for(int i=1;i<=m;i++)f[1][i]=f[1][i-1]*23+s[i];    tmp=1;    for(int i=1;i<=n;i++)    {        tmp*=23;        x=f[0][i];        if(i>m)break;        y=f[1][m]-f[1][m-i]*tmp;        if(x==y)mx=max(mx,i);    }    tmp=1;    for(int i=1;i<=m;i++)    {        tmp*=23;        x=f[1][i];        if(i>n)break;        y=f[0][n]-f[0][n-i]*tmp;        if(x==y)mx=max(mx,i);    }     cout<<mx;    return 0;}
原创粉丝点击