【BZOJ 2351】Matrix(Hash)
题目链接
二维\(Hash\)类似二维前缀和,每一行看成一个\(h\)进制数,每一个以(1,1)为左上角的矩阵看成一个由每一行的\(Hash\)值组成的\(l\)进制数。
然后自己推推柿子就行。
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
#define Open(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);
#define h 1331
#define l 2333
int n, m, r, c, T;
map <unsigned long long, int> mp;
unsigned long long hs[1010][1010], ph[1010], pl[1010], xs[1010][1010];
char ch;
int main(){Open("matrix"); ph[0] = pl[0] = 1;scanf("%d%d%d%d", &n, &m, &r, &c);for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j){ch = getchar();while(ch != '0' && ch != '1') ch = getchar();hs[i][j] = hs[i][j - 1] * h + ch;}for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)hs[i][j] += hs[i - 1][j] * l;for(int i = 1; i <= m; ++i) ph[i] = ph[i - 1] * h;for(int i = 1; i <= n; ++i) pl[i] = pl[i - 1] * l; for(int i = r; i <= n; ++i)for(int j = c; j <= m; ++j)mp[hs[i][j] - hs[i - r][j] * pl[r] - hs[i][j - c] * ph[c] + hs[i - r][j - c] * pl[r] * ph[c]] = 1;scanf("%d", &T);while(T--){for(int i = 1; i <= r; ++i)for(int j = 1; j <= c; ++j)xs[i][j] = 0;for(int i = 1; i <= r; ++i)for(int j = 1; j <= c; ++j){ch = getchar();while(ch != '0' && ch != '1') ch = getchar();xs[i][j] = xs[i][j - 1] * h + ch;}for(int i = 1; i <= r; ++i)for(int j = 1; j <= c; ++j)xs[i][j] += xs[i - 1][j] * l;printf("%d\n", mp[xs[r][c]]);}return 0;
}
转载于:https://www.cnblogs.com/Qihoo360/p/11224239.html
【BZOJ 2351】Matrix(Hash)相关推荐
- 【Java基础】面向对象(三)
[Java基础]面向对象(三) 一.多态 概念 引用类型转换 二.Object类 概述 常用方法 三.抽象类 抽象类与抽象方法的定义 注意事项 四.接口 概述 接口定义 含有抽象方法 含有默认方法和静 ...
- 【Codecs系列】HEVC-SCC(五):HM+SCM中IBC编码流程和实现分析
Date:2022.3.31 文章目录 1.参考 2.函数调用流程 3.关键函数分析 4.SCC编码流程 4.1.PU模式选取过程 4.2.基于hash搜索的IBC模式选取 HEVC-SCC扩展系列文 ...
- 【VB.NET】自定义控件(一)属性说明
[VB.NET]自定义控件(一)属性说明 Bindable 布尔型,为true时表示VS.NET将在数据绑定对话框中显示该控件 Browsable 布尔型,表示该控件是否在设计视图中显示? Cat ...
- 【UOJ#246】套路(动态规划)
[UOJ#246]套路(动态规划) 题面 UOJ 题解 假如答案的选择的区间长度很小,我们可以做一个暴力\(dp\)计算\(s(l,r)\),即\(s(l,r)=min(s(l+1,r),s(l,r- ...
- logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...
前情提要: 通俗地说逻辑回归[Logistic regression]算法(一) 逻辑回归模型原理介绍 上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklear ...
- 【Vue2.0】—组件(十一)
[Vue2.0]-组件(十一) <body><div id="root"><h2>{{name}}</h2><hr>&l ...
- 【Vue2.0】—过滤器(七)
[Vue2.0]-过滤器(七) <body><div id="root"><h2>显示格式化后的时间</h2><!-- 计算属 ...
- 敏友的【敏捷个人】有感(6): 我的改变从执行力分享开始
2010年我对个人管理进行了自己的一些思考,在2011年提出敏捷个人概念,并且在线上.线下进行了多次交流,在一些大会上也做过分享.现在,已经有很 多IT和非IT的敏友们知道并在践行敏捷个人, ...
- 【java笔记】线程(5):线程安全问题
[JAVA笔记]线程(1):多线程的介绍和实现_m0_52043808的博客-CSDN博客 [java笔记]线程(2):多线程的原理_m0_52043808的博客-CSDN博客 [java笔记]线程( ...
最新文章
- SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别
- 【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
- Linux下的find的使用方法
- 万能的Entry,两个变量的Model/JavaBean再也不用写了!
- 牛人的博客(机器学习,图像处理,计算机视觉)
- 字体对话框java实验_Java Web安全 || Java基础 sun.misc.Unsafe
- JVM内存原理及高级特性
- 818. Race Car
- Quick BI产品核心功能大图(六)开放集成
- 漫步线性代数一——引言
- makefile 文件 (​ http://blog.csdn.net/ruglcc/article/details/7814546/ )
- 推荐几款git管理工具
- 思科ASA防火墙接口区域基本信息
- Xshell6及Xftp6的使用
- 当鼠标移动到上面时的应用
- 一文读懂什么是数字证书
- IDEA安装及破解永久版教程————鹏鹏
- ssr pac_全新回馈丨购金币三日礼,获取主线SSR羁绊
- 全差分运放阻抗匹配计算(四)
- 由于轮播图片超宽造成的影响