【BZOJ 2351】 Matrix
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=2351
【算法】
哈希
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
typedef unsigned long long ull;
const int base1 = ;
const int base2 = ;
const int P = 1e5 + ; int i,j,m,n,a,b,q;
ull sum[MAXN][MAXN];
ull power1[MAXN],power2[MAXN];
ull t;
vector< ull > e[P];
char c;
char s[MAXN][MAXN]; inline void insert(ull x)
{
int h = (int)(x % P);
e[h].push_back(x);
}
inline bool query(ull x)
{
int i;
int h = (int)(x % P);
for (i = ; i < (int)e[h].size(); i++)
{
if (e[h][i] == x)
return true;
}
return false;
} int main()
{ scanf("%d%d%d%d",&m,&n,&a,&b);
for (i = ; i <= m; i++) scanf("%s",s[i]+);
for (i = ; i <= m; i++)
{
for (j = ; j <= n; j++)
{
sum[i][j] = s[i][j] - '';
}
}
for (i = ; i <= m; i++)
{
for (j = ; j <= n; j++)
{
sum[i][j] += sum[i-][j] * base1;
}
}
for (i = ; i <= m; i++)
{
for (j = ; j <= n; j++)
{
sum[i][j] += sum[i][j-] * base2;
}
}
power1[] = power2[] = ;
for (i = ; i < m; i++)
{
power1[i] = power1[i-] * base1;
power2[i] = power2[i-] * base2;
}
for (i = a; i <= m; i++)
{
for (j = b; j <= n; j++)
{
t = sum[i][j] - sum[i-a][j] * power1[a] - sum[i][j-b] * power2[b] + sum[i-a][j-b] * power1[a] * power2[b];
insert(t);
}
}
scanf("%d",&q);
while (q--)
{
for (i = ; i <= a; i++) scanf("%s",s[i]+);
for (i = ; i <= a; i++)
{
for (j = ; j <= b; j++)
{
sum[i][j] = s[i][j] - '';
}
}
for (i = ; i <= a; i++)
{
for (j = ; j <= b; j++)
{
sum[i][j] += sum[i-][j] * base1;
}
}
for (i = ; i <= a; i++)
{
for (j = ; j <= b; j++)
{
sum[i][j] += sum[i][j-] * base2;
}
}
if (query(sum[a][b])) printf("1\n");
else printf("0\n");
} return ; }
【BZOJ 2351】 Matrix的更多相关文章
- 【BZOJ 2351】Matrix(Hash)
题目链接 二维\(Hash\)类似二维前缀和,每一行看成一个\(h\)进制数,每一个以(1,1)为左上角的矩阵看成一个由每一行的\(Hash\)值组成的\(l\)进制数. 然后自己推推柿子就行. #i ...
- 【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)
1150: [CTSC2007]数据备份Backup Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设 ...
- Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
- LCA 【bzoj 4281】 [ONTAK2015]Związek Harcerstwa Bajtockiego
[bzoj 4281] [ONTAK2015]Związek Harcerstwa Bajtockiego Description 给定一棵有n个点的无根树,相邻的点之间的距离为1,一开始你位于m点. ...
- 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...
- 【BZOJ 1096】 [ZJOI2007]仓库建设 (斜率优化)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3940 Solved: 1736 Description ...
- 【NOIP模拟】matrix(简化矩阵)
题目背景 SOURCE:NOIP2016-RZZ-1 题目描述 给出两个 N×N 的矩阵 A.B,矩阵每行每列标号 0-N-1 .定义这两个矩阵的乘积 AB 为
- 【BZOJ 2132】圈地计划 && 【7.22Test】计划
两种版本的题面 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土 ...
随机推荐
- 自己整理的HTML基本标签参考知识
基 本 标 签 创建一个HTML文档 <html></html> 设置文档标题以及其他不在WEB网页上显示的信息 <head></head> ...
- 上传预览图片的插件jquery-fileupload
上传预览图片的插件jquery-fileupload github地址:https://github.com/blueimp/jQuery-File-Upload 中文文档:http://www.jq ...
- 2C课程笔记分享_StudyJams_2017
课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...
- Java中面向对象三大特性之——继承
继承的概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 现实生活中继承:子承父业,用来描述事物之间的关系 代码中继承:就是用 ...
- ubuntu18.0安装RabbitMQ
RabbitMQ是一个消息队列,用于实现应用程序的异步和解耦.生产者将生产消息传送到队列,消费中从队列中拿取消息并处理.生产者不用关心是谁来消费,消费者不用关系是谁在生产消息,从而达到解耦的目的.本文 ...
- servlet 中文编码设置
Tomcat服务器默认采用的ISO8859-1编码 产生的原因: 不同数据来源的编(解)码格式不同: 数据来源 默认编码格式 浏览器页面 GBK(可在浏览器页面右键切换) request(get) I ...
- S-HR薪酬项目与核算表的关系
- eas之指定虚模式
KDTable支持三种取数模式:实模式.虚模式分页.虚模式分组,默认为实模式.// 实模式table.getDataRequestManager().setDataRequestMode(KDTDat ...
- apk下载的网址生成一个二维码
apk提供二维码扫描下载,其实就是把apk所在的地址生成二维码. 下面提供一个在线二维码生成网址,http://cli.im/text/1833744?iID7V
- vue,基础整理,夯实基础,为进阶打基础
把基础部分,再次系统的了解一遍,整理成文档.