BZOJ2462 二维hash

关于哈希表二维数组的应用 梅花易数,关于二维数组,哈希表的应用,一位数组。 立即下载

这题挺裸的 想着是hash做 但是还不会二维的 搜了份题解现场学习了一发

大佬代码

#include<bits/stdc++.h>
#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;  
}  
java 二维码生成及其标签打印 本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先... 阅读详情

相关推荐

手把手教你用Python实现最简单的语义通信(Sem Comm)Demo

本文通过Python和PyTorch,手把手教你构建一个基于深度学习的语义通信(Semantic Communication)Demo。该Demo使用自编码器架构,从MNIST图像中提取低维语义特征进行传输与重建,实现了从“传输比特”到“传递含义”的跨越,并探讨了其效率优势与鲁棒性。

weixin_29080843的博客 246

二维hash

http://csustacm.com:4803/problem/1115 一维hash是把一个字符串用一个整数表示,二维hash是把一个矩阵用一个整数表示。 for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) hasha[i][j]=hasha[i][j-1]*base1+a[i][j]; for(int i=1;i&...

SEIZE THE DAY 3476

Light Tools 8.4 在 win10系统上的安装方法(64位)

** 总的来说安装LT需要以下步骤(折腾了三天终于装好): 安装LT软件–禁用签名–加载含数字签名的第三方inf–添加注册表/安装驱动/添加密钥–成功破解 一、下载对应的LightTools 8.4版本软件,如下图为解压后的文件: 并选择 进行默认安装。 二、禁用数字签名。这里我用了两种方法,一种不行就换另一种,最终成功禁用。 方法1: 1、输入“cmd”并以管理员身份运行; 2、输入或复制 bcdedit.exe /set nointegritychecks on (此命令若没成功,再试bcded

weixin_45560953的博客 1万+

字符串——二维矩阵Hash

字符串——二维矩阵Hash 本文介绍的是一种关于二维矩阵Hash的方法,用于在O(1)O(1)O(1)的时间内求出子矩阵的Hash值。 NC 51003 构造 for (int r = 1; r <= n; r++) for (int c = 1; c <= m; c++) m_hash[r][c] = (m_hash[r][c - 1] * HASH_BASE % HASH_MOD + matrix[r][c]) % HASH_MOD; 首先对行取多项式,即: rha

jiahonghao2002的博客 564

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 518

解释多智能体强化学习(Multi-Agent Reinforcement Learning)(面试题200合集,中频、重要)

多智能体强化学习通过扩展传统强化学习框架,研究多个智能体在动态、交互环境中的策略优化问题。它既有理论上的挑战(如非平稳性和均衡求解),也有广泛的实际应用前景。数学上,它依赖马尔可夫博弈模型,核心是设计算法让智能体在合作或竞争中达到最优。

qq_38334677的博客 990

hash——矩阵(二维hash)

【代码】hash——矩阵(二维hash)

测试 698

华为OD机试真题 新系统2026-04-01 C++ 实现【勇攀数字高峰】

请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。

MISAYAONE的博客 383

二维哈希

文章目录前置知识二维哈希表的预处理二维哈希表的查询操作例题解析 哈希前置知识请戳这里->哈希绪论 关于哈希的其他例题也可以在我字符串哈希的分类专栏中找到 有了一维哈希的基础知识,很容易就能联想到二维哈希。那具体又该如何实现呢? 前置知识 我们先回顾一下二维前缀和的求解方法,设ppp为二维差分数组,aaa为原数组,则有p[i][j]=p[i−1][j]+p[i][j−1]−p[i−1][j−1]+a[i][j]p[i][j]=p[i-1][j]+p[i][j-1]-p[i-1][j-1]+a[i][j]

小e的博客 3298

2小时用Trae搭建全功能CMS系统

在前文中,我们使用Trae从零搭建了一个用户文档站点,仅用不到2小时就实现了用户注册登录和文档的增删改查功能,且无需编写任何代码。本节我们将在此基础上,构建一个CMS后台管理系统,包含用户管理和文档管理两大功能模块。

2501_92019101的博客 540

R数据分析:潜在剖面分析LPA的做法与解释

Latent Profile Analysis (LPA) tries to identify clusters of individuals (i.e., latent profiles) based on responses to a series of continuous variables (i.e., indicators). LPA assumes that there are unobserved latent profiles that generate patterns of resp.

Codewar的博客 1万+

字符串哈希详解 二维哈希 Hash

字符串hash方法 字符串 hashhashhash 就是把一个字符串映射成一个非负整数。 (同时碰撞的概率极低) 设计一个较大质数 ppp,把字符串看作 ppp 进制数。(如 313131,131131131,133113311331) (想想为什么要用质数) 对于已知的字符串 sss,我们有 hashhashhash 值为 H(s)\text{H}(s)H(s),那么我们在 sss 后面增加一个字符 ccc 构成新的字符串 s+cs+cs+c,该串的 hashhashhash 值则为 H(s)∗p+(c

CofDoria的博客 1476

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 752

bzoj2462[二维hash/矩阵hash]

//二维hash //相当于每个位置有两个权,行一个,列一个,然后推的方法和一维一样 //bzoj2462 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std...

zz_ylolita 346

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

BZOJ2462

BZOJ 2462 (二维hash学习) 二维hash 创建两个种子 base1,base2base1,base2base1,base2 创建一个 无符号 646464 位数组 hashahashahasha 先对每一行做前缀 hashhashhash 值 for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) ...

strategist_614的博客 167

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

bzoj 2462 矩阵模板 (二维hash)

二维hash 用于一般解决字符串矩阵问题,我们可以定义两个 进制数,求出mn字符串矩阵影视的数 求大小位 rc的子矩阵,可以由推得 : ans[i][j]=hash[i][j]-hash[i][j-r]*p1[r]+hash[i-c][j]*p2[c]]+hash[i-1][j-1]*p1[r]*p2[c]; 矩阵模板 题解: 我们先求出整体矩阵的hash[ ][ ]: 在根据上面公式求...

yangzijiangac的博客 277

BZOJ 2462 BeiJing 2011 矩阵模板 二维hash

题目大意:给出一个m*n的由01组成的矩阵,下面有q个询问,查询矩阵中存不存在大小为k*l的子矩阵。 思路:二维hash。我们先把大矩阵hash,然后把所有可能的k*l的子矩阵都插到哈希表里,然后只要对于每个询问hash一下看哈希表中是否存在。 值得一提的是,这个题只需要输出10个1就可以AC了。。 CODE: #include #include #include

(╯°口°)╯(┴—┴ 3万+

bzoj2462(矩阵二维hash)……不会的题就hash

实际上,就是横着hash一次,再竖着hash一次,注意横竖的base不能相同 冲突是难以避免的 取一个矩阵的hash a[i][j]- a[i][j-mm]*qb1[mm]- a[i-nn][j]*qb2[nn]+ a[i-nn][j-mm]*qb1[mm]*qb2[nn]; hs[++tot]=hss;//二维差分取hash值 也是通过差分来取,和一维的差不多

zhhx2001的博客 2010

BZOJ 2462 [BeiJing2011]矩阵模板(二维hash)

题目链接 题意 查询小矩阵是否在大矩阵出现过,多组查询,小矩阵大小固定 思路 二维矩阵hash,将所有小矩阵可能值记录,最后 O(log)O(log)O(log) 判断是否出现过 本题主要整个二维hash模板,模板常数特别大,需要将重复的自行优化 代码 存模板用超时代码 #include <bits/stdc++.h> using namespace std; #define ull...

←_← 164

BZOJ 2462/2351 [BeiJing2011]矩阵模板/[BeiJing2011]Matrix 二维哈希

Description 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在 原矩阵中出现过。    所谓01矩阵,就是矩阵中所有元素不是0就是1。    Input 输入文件的第一行为M、N、A、B,参见题目描述。 接下来M行,每行N个字符,非0即1,描述原矩阵。 接下来一行为你要处理的询问数Q。 接下来Q个矩阵,一共Q*A行,

I'm Growing 507

[BZOJ]2462: [BeiJing2011]矩阵模板 二维hash

hash

TYB的博客 587

【BZOJ 2462】矩阵模板 (二维哈希)

题目 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在 原矩阵中出现过。 所谓01矩阵,就是矩阵中所有元素不是0就是1。 输入 输入文件的第一行为M、N、A、B,参见题目描述。 接下来M行,每行N个字符,非0即1,描述原矩阵。 接下来一行为你要处理的询问数Q。 接下来Q个矩阵,一共Q*A行,每行B个字符,描述Q个01矩阵。 输出 你需要输出Q行,每行为0或者...

weixin_33965305的博客 366

BZOJ 2462: [BeiJing2011]矩阵模板 二维哈希

2462: [BeiJing2011]矩阵模板 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 1104  Solved: 516 [Submit][Status][Discuss] Description 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在 原矩阵中出现过。     所谓01矩阵,就

BlackJack 494

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

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

weixin_30321709的博客 122

BZOJ2462: [BeiJing2011]矩阵模板(二维hash)

题意 题目链接 Sol 二维矩阵hash,就是对行和列分配一个不同的base,然后分别做一遍hash,这样会减少冲突的概率。 预处理出所有大小为\(A \times B\)的矩阵的hash值,判断一下即可 mdzz居然卡常数 #include&lt;bits/stdc++.h&gt; #define ull unsigned int using namespace std; const int M...

weixin_33716941的博客 164

BZOJ2462: [BeiJing2011]矩阵模板

哈希 题目传送门 二维哈希就好了。注意不要用unsigned long long,会T的(BZOJ 32位机子)。 代码: #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #define N 1005 #define M 105 #define F inline using namespace std...

forezxl的博客 305
上一篇: BZOJ2759 hash
下一篇: BZOJ3036 期望DP
Devil_Gary
博客等级 码龄9年 5粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值