UVA 11019 Matrix Matcher(字符hash)
2015-08-28 08:32
274 查看
题目:点击打开链接
分析:一个不太科学的方法,复杂度没降多少,将每一行每一列hash出来,然后n^2比较,最坏情况下达10^8
分析:一个不太科学的方法,复杂度没降多少,将每一行每一列hash出来,然后n^2比较,最坏情况下达10^8
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<set> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) const int INF=0x3f3f3f3f; typedef long long LL; const int mod=1e9+7; const int p=1e6+7; int t,n,m,x,y; char str[1010]; int ha[1010][1010]; int he[1010]; LL bin; void Hash(int id,int l) { LL ans=0; for(int i=1;i<=l;i++) { ans=(ans*1LL*p+str[i])%mod; ha[id][i]=ans; } } void Hash1(int id,int l) { LL ans=0; for(int i=1;i<=l;i++) ans=(ans*1LL*p+str[i])%mod; he[id]=ans; } LL Pow(LL a,LL b) { LL ans=1; while(b) { if(b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans; } bool ok(int i,int j,int k)//i行j列开始 { LL res1=(ha[i][j+y-1]-ha[i][j-1]*bin%mod+mod)%mod; LL res2=he[k]; return res1==res2; } int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); REPF(i,1,n) { scanf("%s",str+1); Hash(i,m); } scanf("%d%d",&x,&y); for(int i=1;i<=x;i++) { scanf("%s",str+1); Hash1(i,y); } int ans=0; bin=Pow(p,y); for(int i=1;i<=n;i++) { if(i+x-1>n) break; for(int j=1,k;j<=m;j++) { if(j+y-1>m) break; for(k=i;k<i+x;k++) if(!ok(k,j,k-i+1)) break; if(k>=i+x) ans++; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- OC:copy 与 retain 的区别
- CentOS学习4_Error mounting: mount: wrong fs type, bad option, bad superblock on /dev/sdb1简单解决方法
- C#封装SQLDMO操作SQL Server 2000的类
- java多线程(九)阻塞队列
- 更加简洁易用——wangEditor富文本编辑器新版本发布
- Windows下配置wampserver
- Win10 Build 10532预览版更新了哪些内容弄?三项重要改进汇总
- 他们能看到生活中正在变化的事物,他们能看到前途,告诉自己,“我能通过这个来创业”
- 任性动图--傻瓜式创作动图、创作动图就是这么简单、就是这么任性!!!
- maven一键部署tomcat war包
- java成员变量和局部变量区别
- 简化SQL式计算之固定排序
- 泛型练习
- 一步一步学习SignalR进行实时通信_4_Hub
- Win10 Build 10532发布 64位Chrome程序启动时崩溃
- wordpress显示Index of /一堆代码及目录的问题
- Win10任务栏模糊特效怎么没有了?
- 使用HttpSessionListener接口监听Session的创建和失效
- Django之第一个app<4>
- 定义一个函数清除该数组的重复元素