传送门

二维哈希即可。

注意质数选的大一些,不然会超时。

还有插入的时候不判重居然比判重要快。。

——代码

 #include <cstdio>
int main()
{
int i = ;
while(i--) puts("");
return ;
}

O不,错了,是这个。

 #include <cstdio>
#include <cstring>
#include <iostream>
#define UI unsigned int const int p = , MAXN = ;
int n, m, a, b, q, cnt, head[p], next[MAXN * MAXN];
UI h, sum[MAXN][MAXN], base1[MAXN], base2[MAXN], to[MAXN * MAXN]; inline void insert(UI x)
{
int i, a = x % p;
for(i = head[a]; i ^ -; i = next[i])
if(!(to[i] ^ x))
return;
to[cnt] = x;
next[cnt] = head[a];
head[a] = cnt++;
} inline bool find(UI x)
{
int i, a = x % p;
for(i = head[a]; i ^ -; i = next[i])
if(!(to[i] ^ x))
return ;
return ;
} int main()
{
int i, j;
scanf("%d %d %d %d", &n, &m, &a, &b);
base1[] = base2[] = ;
memset(head, -, sizeof(head));
for(i = ; i <= n; i++) base1[i] = base1[i - ] * ;
for(i = ; i <= m; i++) base2[i] = base2[i - ] * ;
for(i = ; i <= n; i++)
for(j = ; j <= m; j++)
scanf("%1d", &sum[i][j]);
for(i = ; i <= n; i++)
for(j = ; j <= m; j++)
sum[i][j] += sum[i - ][j] * ;
for(i = ; i <= n; i++)
for(j = ; j <= m; j++)
sum[i][j] += sum[i][j - ] * ;
for(i = a; i <= n; i++)
for(j = b; j <= m; j++)
{
h = sum[i][j];
h -= sum[i - a][j] * base1[a];
h -= sum[i][j - b] * base2[b];
h += sum[i - a][j - b] * base1[a] * base2[b];
insert(h);
}
scanf("%d", &q);
while(q--)
{
for(i = ; i <= a; i++)
for(j = ; j <= b; j++)
scanf("%1d", &sum[i][j]);
for(i = ; i <= a; i++)
for(j = ; j <= b; j++)
sum[i][j] += sum[i - ][j] * ;
for(i = ; i <= a; i++)
for(j = ; j <= b; j++)
sum[i][j] += sum[i][j - ] * ;
printf("%d\n", find(sum[a][b]));
}
return ;
}

[BZOJ2462] [BeiJing2011]矩阵模板(二维Hash)的更多相关文章

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

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

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

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

  3. BZOJ 2462 矩阵模板(二维hash)

    题意:给出一个n*m的01矩阵,以及k个a*b的01矩阵,问每个是否能匹配原来的01矩阵. 由于k个矩阵的长和宽都是一样的,所以把原矩阵的所有a*b的子矩阵给hash出来.然后依次查找是否存在即可. ...

  4. 牛客练习赛1 矩阵 字符串二维hash+二分

    题目 https://ac.nowcoder.com/acm/contest/2?&headNav=www#question 解析 我们对矩阵进行二维hash,所以每个子矩阵都有一个额hash ...

  5. 【题解】 bzoj2462: [BeiJing2011]矩阵模板

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

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

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

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

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

  8. BZOJ2351[BeiJing2011]Matrix——二维hash

    题目描述 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过.所谓01矩阵,就是矩阵中所有元素不是0就是1. 输入 输入文件的第一行为M.N.A.B,参见 ...

  9. 【bzoj2351】[BeiJing2011]Matrix 二维Hash

    题目描述 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过.所谓01矩阵,就是矩阵中所有元素不是0就是1. 输入 输入文件的第一行为M.N.A.B,参见 ...

随机推荐

  1. 01背包 Codeforces Round #267 (Div. 2) C. George and Job

    题目传送门 /* 题意:选择k个m长的区间,使得总和最大 01背包:dp[i][j] 表示在i的位置选或不选[i-m+1, i]这个区间,当它是第j个区间. 01背包思想,状态转移方程:dp[i][j ...

  2. Android 插件技术:动态加载dex技术初探

    1.Android动态加载dex技术初探 http://blog.csdn.net/u013478336/article/details/50734108 Android使用Dalvik虚拟机加载可执 ...

  3. Android 线程池系列教程(2)Thread,Runnable是基类及如何写Run方法

    Specifying the Code to Run on a Thread 上一课   下一课 1.This lesson teaches you to Define a Class that Im ...

  4. 转 ORA-00054 的解决方法

    统有一个不用的索引,想删除这个索引, SQL> drop index GPSTIME_GLOBAL_INDEX  2  /drop index GPSTIME_GLOBAL_INDEX      ...

  5. Java编码格式

    简介 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Jav ...

  6. Python基础第一天

    诞生时间:1991年,创造者Guido van Rossum 优点: 1.简单  Python是一种代表简单注意思想的语言 2.易学  Python是及其容易上手,因为Python有极其简单的说明文档 ...

  7. spark yarn cluster模式下任务提交和计算流程分析

    spark可以运行在standalone,yarn,mesos等多种模式下,当前我们用的最普遍的是yarn模式,在yarn模式下又分为client和cluster.本文接下来将分析yarn clust ...

  8. Node.js搭建静态服务器

    let http = require('http'); let url = require('url'); let fs = require('fs'); let path = require('pa ...

  9. JWT认证阐述

    哥发达了,是时候实现一下儿时的梦想了,怡红院开起! 店面门脸装修如何?做生意,谁还没个镇店之宝啊?有请我的店长如花小姐! 没事哈!别怕,扭曲的五官往往都藏着一颗纯洁的心灵. 不管如何吧,我的怡红院算是 ...

  10. Dragger2解析(一)

    依赖注入(DI-Dependency Injection) 什么是依赖注入 这是一种设计思想,一个面向对象的编程法则. DI能够让开发者写出低耦合代码,更加优良的程序. 更容易测试,代码健壮性更强. ...