传送门

二维哈希即可。

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

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

——代码

 #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. 题解报告:hdu 1260 Tickets

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 Problem Description Jesus, what a great movie! T ...

  2. javaweb-JSP action中附件下载的写法

     附件下载(包括图片,exl,word)在前台必须给出一个iframe 或者类似于window的窗口,另外,Java文件下载不能通过ajax进行请求,必须添加src属性首选,前台的链接拼接html如下 ...

  3. SQL SERVER 事务例子

    存储过程格式: CREATE PROCEDURE YourProcedure AS BEGIN SET NOCOUNT ON; BEGIN TRY---------------------开始捕捉异常 ...

  4. AJPFX学习Java函数知识总结

    函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数.函数就是体现之一. java中的函数的定义格式:         修饰符 返回值类型 函数名(参数类型 形 ...

  5. 锁 Lock、重入锁、写入锁

    ReentrantLock 重入锁 类似于synchronize 区别与写法上,在需要进行同步的代码部分加上锁定,但不要忘记最后一定要释放锁定, 不然会造成锁永远无法释放,其他线程永远进不来的结果.e ...

  6. hihocoder编程练习赛52-2 亮灯方案

    思路: 状态压缩dp.实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ] = {, , ...

  7. JS中的对象之原型

    对象 ECMAScript做为一个高度抽象的面向对象语言,是通过_对象_来交互的.即使ECMAScript里边也有_基本类型_,但是,当需要的时候,它们也会被转换成对象. 一个对象就是一个属性集合,并 ...

  8. iOS Programming UISplitViewController

    iOS Programming UISplitViewController  The iPad, on the other hand, has plenty of screen space to pr ...

  9. Mysql——Innodb和Myisam概念与数据恢复

    Innodb和Myisam是Mysql常见的两种数据存储引擎.没有研究过Oracle.SQL Server等数据库,所以下面只针对Mysql. 一.两种方式的数据存储结构: 在Myisam下,数据库的 ...

  10. Javascript IE 内存释放

    一个内存释放的实例 <SCRIPT LANGUAGE="JavaScript"><!--strTest = "1";for ( var i = ...