题面戳我

Solution

  • 二维矩阵\(hash\),判断即可
  • 自己YY了一个方法,\(bzoj\)T到飞,(一开始还用的三\(hash\)),交到luogu貌似跑的不慢啊qwq
  • (我是不会告诉你全输出1即可AC)

Update

  • 我这个代码复杂度是错的\(O(n^4)\)的(我就说怎么卡不进时间,跑的还没暴力快)
  • 正确做法应该是预处理出所有的子矩阵的\(Hash\)值,然后判重即可,这样就是\(O(n^2)\)的了

Code

  • 伪·二维\(hash\)
// luogu-judger-enable-o2
//It is coded by ning_mew on 7.24
#include<bits/stdc++.h>
#define LL long long
#define US unsigned
using namespace std; const int maxn=1007; int n,m,A,B,Q=0;
char ch[maxn][maxn],q[maxn][maxn];
LL MOD[3]={19260817,20000909,19491001};
LL Hash[3][maxn][maxn],Pow[3][maxn];
LL box[3][maxn]; inline void pre(){
for(US int k=0;k<1;k++){
Pow[k][0]=1;
for(US int i=1;i<=n;i++){
Hash[k][i][0]=0;
for(US int j=1;j<=m;j++){
Hash[k][i][j]=(Hash[k][i][j-1]*2+(ch[i][j]-'0'))%MOD[k];
Pow[k][j]=(2*Pow[k][j-1])%MOD[k];
}
//cout<<ch[i]+1<<endl;
//cout<<" pre_hash:"<<k<<' '<<i<<' '<<' '<<Hash[k][i][m]<<endl;
}
}
}
inline bool check(int x,int y){
for(US int k=0;k<1;k++){
for(US int i=x;i<=x+A-1;i++){
LL sa=((Hash[k][i][y+B-1]-Hash[k][i][y-1]*Pow[k][B])%MOD[k]+MOD[k])%MOD[k];
LL sb=box[k][i-x+1];
if(sa!=sb)return false;
}
}return true;
}
inline void work(){
//memset(box,0,sizeof(box));
for(US int k=0;k<1;k++){
for(US int i=1;i<=A;i++){
box[k][i]=0;
for(US int j=1;j<=B;j++){
box[k][i]=(box[k][i]*2+(q[i][j]-'0'))%MOD[k];
}//cout<<" q_hash:"<<k<<' '<<i<<' '<<box[k][i]<<endl;
}
}
for(US int x=1;x<=n-A+1;x++){
for(US int y=1;y<=m-B+1;y++){
if(check(x,y)){printf("1\n");return;}
}
}printf("0\n");return;
}
int main(){
scanf("%d%d%d%d",&n,&m,&A,&B);
for(US int i=1;i<=n;i++)scanf("%s",ch[i]+1);//,cout<<ch[i]+1<<endl;//cin>>ch[i]+1;
pre(); scanf("%d",&Q);
for(US int i=1;i<=Q;i++){
for(US int j=1;j<=A;j++)scanf("%s",q[j]+1);//,cout<<q[j]+1<<endl;//cin>>q[j]+1;
work();
}return 0;
}

博主蒟蒻,随意转载。但必须附上原文链接:http://www.cnblogs.com/Ning-Mew/,否则你会场场比赛爆0!!!

【题解】 bzoj2462: [BeiJing2011]矩阵模板的更多相关文章

  1. BZOJ2462[Beijing2011]矩阵模板(二维Hash)

    二维矩阵匹配问题,至今不知道Q的范围是多少,反正是要求做到读入复杂度. 二维Hash:就是一维的等效拓展,注意两维的Base不能相同. 其余就是一维Hash和二维前缀和的结合,可以自然溢出,据说概率很 ...

  2. [bzoj2462] [BeiJing2011]矩阵模板

    二维的hash.. 注意n的范围是1000........ 真相似乎是全部输出1就行了233 #include<cstdio> #include<iostream> #incl ...

  3. 【kmp算法】【Rabin-Karp算法】bzoj2462 [BeiJing2011]矩阵模板

    算法就不说了,反正是基于字符串匹配的.这里比较一下kmp和Rabin-Karp算法. <法一>kmp算法. 592788 lizitong 2462 Accepted 4828 kb 68 ...

  4. [BZOJ2462] [BeiJing2011]矩阵模板(二维Hash)

    传送门 二维哈希即可. 注意质数选的大一些,不然会超时. 还有插入的时候不判重居然比判重要快.. ——代码 #include <cstdio> int main() { ; ") ...

  5. BZOJ 2462: [BeiJing2011]矩阵模板

    2462: [BeiJing2011]矩阵模板 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 915  Solved: 432[Submit][Stat ...

  6. 【bzoj2462】[BeiJing2011]矩阵模板

    #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> # ...

  7. BZOJ.2462.[BeiJing2011]矩阵模板(二维Hash)

    题目链接 序列上的Hash和前缀和差不多,二维Hash也和二维前缀和差不多了. 预处理大矩阵所有r*c的小矩阵hash值,再对询问的矩阵Hash. 类比于序列上\(s[r]-s[l-1]*pow[r- ...

  8. BZOJ 2462 [BeiJing2011]矩阵模板 矩阵哈希

    昨天卡了一天常数...然后发现吧$unsigned\space long\space long$改成$unsigned$就可以过了$qwq$ 先把每一行的前缀哈希求出,然后再竖着把每个前缀哈希值哈希起 ...

  9. POJ_Fibonacci POJ_3070(矩阵快速幂入门题,附上自己写的矩阵模板)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10521   Accepted: 7477 Descri ...

随机推荐

  1. python学习第七篇——字典访问键与值

    此程序的目的在于,正确而简单的访问字典的键与值 favorite_languages={ 'jen':['python','c'], 'sarah':['c'], 'edward':['ruby',' ...

  2. Django admin参数配置

    admin参数配置 一. admin 启动 admin: Django的后台数据管理的web版本 针对Food表,url: http://127.0.0.1:8000/admin/app02/food ...

  3. JEECG DataGridColumn dictionary使用问题

    <t:dgCol title="线索所属人"  field="ownerId"  query="true"  queryMode=&q ...

  4. React-Native windows环境搭建记录

    1.安装jdk,SDK Jdk下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-213315 ...

  5. CentOS7 网络NAT模式

    问题:安装完毕ping命令不能用,然后改为桥接模式,ping可以用. 先了解桥接,NAT 的含义. 桥接:在bridged模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访 ...

  6. 关于jenkins旧的构建导致磁盘空间不足问题

    简述: Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,长期累积可能会占用大量磁盘空间 jenkins构建jobs路径如下图: 解决办法: ...

  7. EmpireCMS的使用

    1.下载安装empirecms 下载完成后解压将upload目录整体上传到服务器,并更名为empirecms_test 更改目录文件的权限: chmod -R 777 empirecms_test 配 ...

  8. MyBatis的XML中使用内部类的方式

    内部类需要使用$符号连接,而不是点.,如 com.pingan.job.openapi.model.SMSESBResult$ReceiveResult$ResultInfo 从CSDN论坛查到的. ...

  9. linux硬盘的分区、格式化、挂载以及LVM

    linux硬盘的分区.格式化.挂载以及LVM   多块硬盘的组合: 硬盘分两种:ide和scsi. ide硬盘: /dev/hda 第一块IDE硬盘 /dev/hdb 第二块IDE硬盘 ... /de ...

  10. FormDestroy 和 FormClose 有什么区别和联系?

    1.窗口的所有资源真正释放时调用 FormDestroy.当你关闭窗口时,VCL会调用FormClose,如果你在FormClose里写Action = caFree,那么VCL会继续调用FormDe ...