当前位置: 首页 > article >正文

BZOJ 2462 BeiJing 2011 矩阵模板 二维hash

题目大意:给出一个m*n的由01组成的矩阵,下面有q个询问,查询矩阵中存不存在大小为k*l的子矩阵。


思路:二维hash。我们先把大矩阵hash,然后把所有可能的k*l的子矩阵都插到哈希表里,然后只要对于每个询问hash一下看哈希表中是否存在。

值得一提的是,这个题只需要输出10个1就可以AC了。。


CODE:

#include <cstdio>
#include <bitset>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 1100
using namespace std;
const unsigned int BASE1 = 10016957;
const unsigned int BASE2 = 10016957;
const int MO = 99999997;int m,n,ask_m,ask_n,asks;
unsigned int hash[MAX][MAX],_hash[MAX][MAX];
unsigned int pow1[MAX],pow2[MAX];bool set[100000000];inline unsigned int GetHash()
{for(int i = 1; i <= ask_m; ++i)for(int j = 1; j <= ask_n; ++j)_hash[i][j] += _hash[i - 1][j] * BASE1;for(int i = 1; i <= ask_m; ++i)for(int j = 1; j <= ask_n; ++j)_hash[i][j] += _hash[i][j - 1] * BASE2;return _hash[ask_m][ask_n];
}int main()
{cin >> m >> n >> ask_m >> ask_n;for(int i = 1; i <= m; ++i)for(int j = 1; j <= n; ++j)scanf("%1d",&hash[i][j]);pow1[0] = pow2[0] = 1;for(int i = 1; i <= 100; ++i)pow1[i] = pow1[i - 1] * BASE1,pow2[i] = pow2[i - 1] * BASE2;for(int i = 1; i <= m; ++i)for(int j = 1; j <= n; ++j)hash[i][j] += hash[i - 1][j] * BASE1;for(int i = 1; i <= m; ++i)for(int j = 1; j <= n; ++j)hash[i][j] += hash[i][j - 1] * BASE2;for(int i = ask_m; i <= m; ++i)for(int j = ask_n; j <= n; ++j) {unsigned int h = hash[i][j];h -= hash[i - ask_m][j] * pow1[ask_m];h -= hash[i][j - ask_n] * pow2[ask_n];h += hash[i - ask_m][j - ask_n] * pow1[ask_m] * pow2[ask_n];set[h % MO] = true;}for(cin >> asks; asks--;) {for(int i = 1; i <= ask_m; ++i)for(int j = 1; j <= ask_n; ++j)scanf("%1d",&_hash[i][j]);puts(set[GetHash() % MO] ? "1":"0");}return 0;
}


http://www.lryc.cn/news/2419919.html

相关文章:

  • 2023计算机毕业设计SSM最新选题之java体育运动兴趣社区系统8bisy
  • CSS3:3D移动translate3d及3D转换透视效果perspective
  • 分布式系统架构网络之IDC机房
  • 靶向代谢组
  • 【UWB 定位】高精度定位
  • js获取数组长度-length属性的介绍
  • 专访 SphereEx 创始团队:获数百万美金投资,接棒 ShardingSphere 打造全新分布式生态
  • SpringBoot+Flowable 完美结合,优雅实现工作流!
  • EWSA破解WPA无线密码具体图文教程
  • 抓取静态网页数据
  • Hyperledger Fabric2.3 环境搭建及Fabric 测试网络使用
  • 初步了解SequoiaDB数据库
  • CSS3动画—— transition
  • ext-gwt与gwt-ext的区别
  • 7.1创新Audigy2Z S 7.1声卡的设置方法
  • 两个线程实现AABBCCDD
  • app测试系列-超详细的app测试攻略,一文带你学会移动端测试
  • 软件应用技巧二十二则
  • 好玩的100个网站收藏
  • 【腾讯云云上实验室】——向量数据库——Web端操作
  • 决策支持系统(DSS)介绍
  • 【C语言】静态函数(static)
  • JDBC 之ResultSetMetaData获取列名字
  • sockaddr和sockaddr_in的说明以及inet_pton和inet_ntop
  • Jsp(主要内容)
  • 关于使用response.addHeader下载中文名乱码问题
  • 2024两种免费永久域名,手快有,手慢无
  • LED驱动电路设计及原理分析
  • 《C#入门经典 第7版》读书笔记_集合
  • Java常见面试题-100道