实用指南:力扣2132. 用邮票贴满网格图

news/2025/9/23 9:22:00/文章来源:https://www.cnblogs.com/yfceshi/p/19106575

在这里插入图片描述
在这里插入图片描述

这一题的大意是给出一个网格图,是一个mn的二进制矩阵,为0表示为空,为1表示为占据。现在往里面贴邮票,贴邮票的规则是:
覆盖所有空格子。
不覆盖任何被占据的格子。
我们允许放入任意数目的邮票。
通过邮票能够相互有重叠部分。
邮票不允许旋转 。
邮票必须完全在矩阵内 。

邮票的长宽为:stampHeight x stampWidth
试图往这个格子里面贴满邮票,如果许可贴满,就返回true,否则返回false。就是现在的目标
大家根据规则,行知道要想贴满,我们只能从一个个符合邮票的子矩阵中试,看能不能往里面贴,也即在这个子矩阵中有没有被占据的格子,如果可以,就往里面贴邮票。
根据题目上给出的数据范围,我们知道O(m
n)<=2*10^ 5 ,m,n <=2 * 10^5
因此我们只能用双重for循环,对矩阵进行遍历一次来实现目标。
暴力不行,这一题很明显允许看出需要前缀和+差分的优化,
检查子矩阵中有没有被占据的格子,可以用二维前缀和计算子矩阵的面积来表示,因为是二进制矩阵,只需要子矩阵的面积==0就表示该子矩阵是许可被贴邮票的
通过贴邮票的过程,我们能够用差分数组来表示,这样完美的只必须n * m的时间复杂度

for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+grid[i-1][j-1];
}
}
for(int i=0;i+stampHeight-1<n;i++)
{
for(int j=0;j+stampWidth-1<m;j++)
{
//这里应该求子矩阵的面积
if(sum[i+stampHeight][j+stampWidth]-sum[i+stampHeight][j]-sum[i][j+stampWidth]+sum[i][j]==0)
{
//说明可以放邮票
d[i+1][j+1]+=1;
d[i+stampHeight+1][j+1]-=1;
d[i+1][j+stampWidth+1]-=1;
d[i+stampHeight+1][j+stampWidth+1]+=1;
}
}
}

然后我们只应该对差分数组进行求一个前缀和即可得到贴上邮票后的矩阵的各个值,
大家只需要表示出每一个点的差分数组的前缀和的值不大于0(说明没有被贴邮票)并且该点原本的二进制矩阵的值也为0(说明该点也没有被占据),那么就说明该点既没有被贴邮票,也没有被占据,就返回false。反之返回true
时间复杂度为O(n*m)
注意:1.在计算子矩阵的时候要注意边界条件,实际上这一题也可以参考:

力扣1895. 最大的幻方
1895只运用了二维前缀和,但我觉得思想实际上还是挺像的,本题多用了二维差分。应该还有类似的题目,我做的题目比较少。

2.差分数组的前缀和数组,并不是表示的是面积,而是每一个点经过差分后的值,基于我总把差分数组的前缀和数组用sum表示,导致曲解了它的意思。
一样的。就是3.这种子矩阵的题要多总结,套路实际上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全向量模板类SiVector - 实践

安全向量模板类SiVector - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

ONCHAINID源码分析(二)

ONCHAINID源码分析(二)上一章节我们对ONCHAINID做了一个总览、对各个组成部分做了概要性质的讲解,然后着重对整套合约的部署框架和代理合约设计做了代码分析。这使得我们对整体有了一定的理解,本章我们继续学习ONCHA…

gl账号注册网站沧州网站优化价格

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

福田网站建设流程网站设计网页配色

std::future —C17 多线程 std::future C标准程序库使用future来模拟这类一次性事件&#xff1a;若线程需等待某个特定的一次性事件发生&#xff0c;则会以恰当的方式取得一个future&#xff0c;它代表目标事件&#xff1b;接着&#xff0c;该线程就能一边执行其他任务&#…

云服务器搭建网站教程苏州做外贸网站

【README】 本文转自bilibili《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1】中断介绍 1&#xff09;作用&#xff1a;用中断系统实现了外设数据的输入输出&#xff1b; 还可以用于程序调试&…

东庄水利枢纽建设公司网站本地网站建设教程xampp

《精通Unix下C语言编程与项目实践》读书笔记(new)文章试读 不拘一个遍程序系列&#xff1a;编程序不能一个脑袋钻到底&#xff0c;有时要学会变通&#xff0c;即所谓的曲线救国。一、二、三、四职场规划&#xff1a;一些杂七杂八的职场感悟吧。不值钱的软件人才 精力充沛与事业…

展览馆网站建设西安做网站朋朋网络

工作中&#xff0c;经常遇到端口转发的情况。实现的方式很多种&#xff0c;个人感觉还是用nginx实现方便一些。我的环境是ubuntu 22.04, 路由器开通端口段全部映射到这台机器&#xff0c;然后再由它转发给各兄弟机。 /etc/nginx/nginx.conf, 文末位置加入&#xff1a; stream…

烟台招远网站建设牛杂网这类网站怎么做的

分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1.M…

集客营销软件官方网站微营销

先上原链接&#xff0c;一个很不错的wpf图标库 : https://github.com/MahApps/MahApps.Metro.IconPacks提供了大量的图标可以用&#xff0c;如下图&#xff1a;&#xff08;部分截图&#xff09;简单分析了一下代码&#xff0c;并模仿它写一个图标类和简单的使用示例&#xff1…

织梦导航网站模板武安信息港

高盛&#xff0c;作为全球领先的金融机构之一&#xff0c;近日发布了一份报告&#xff0c;预测在科技巨头的涨势推动下&#xff0c;标普500指数年底前有望升至6000点。这一预测引起了市场的广泛关注&#xff0c;投资者们纷纷开始重新评估自己的投资策略。 David Kostin等策略师…

做淘宝店铺有哪些好的网站建设公众号官方网站

PyCryptodome是python一个强大的加密算法库&#xff0c;可以实现常见的单向加密、对称加密、非对称加密、非对称加密算法签名和流加密算法。 直接pip安装即可&#xff1a;pip install pycryptodome 官网地址&#xff1a;https://pypi.org/project/pycryptodome/ 一、base64编码…

最佳三维文件格式,以及怎么在线浏览编辑FBX/OBJ/GLB/GLTF

什么是专有 3D 文件格式专有 3D 文件类型是特定于特定软件或公司的格式。专有文件格式的示例包括.max (3ds Max)、.blend (Blender)、.c4d (Cinema 4D)。 这些 3D 文件格式通常因其专有软件的功能丰富的选项而受…

秸秆可以发酵吗网站建设吗莱芜杂谈话题

个人主页 水月梦镜花 个人专栏 C语言 &#xff0c;数据结构 文章目录 一、顺序表二、实现思路1.存储结构2.初始化顺序表(SeqListInit)3.销毁顺序表(SeqListDestroty)4.打印顺序表(SeqListPrint)5.顺序表尾插(SeqListPushBack)and检查容量(SeqListCheckCapacity)6.顺序表头插(Se…

欧美平面设计网站网站后台账户如何做会计分录

前言 由于需要使用不同的qt环境&#xff08;PySide&#xff0c;PyQt&#xff09;所以写了这个脚本&#xff0c;使用找到的随便一个rcc命令去转换qrc文件&#xff0c;然后将导入模块换成qtpy这个通用库(支持pyside2-6&#xff0c;pyqt5-6)&#xff0c;老版本的是Qt.py(支持pysi…

网站建设属开票核定税种网络设计实践课程报告

在游戏开发领域&#xff0c;虚拟世界游戏定制开发是一项引人注目的任务&#xff0c;旨在满足客户独特的需求和愿景&#xff0c;创造一个完全个性化的虚拟世界游戏。这种类型的游戏开发需要专业的技能、深刻的游戏开发知识和密切的与客户合作&#xff0c;以确保游戏满足客户的期…

站长之家音效南京较好的网站制作公司

下面的讨论是我对《对编程实现拟人智能可行性的论证》这篇文章的“赋值与对象的标志”这一节的展开讨论。 标志能够使我们更好的思维&#xff08;比如用轮廓标记物体对象&#xff0c;用兴奋强度标记回忆情况等等&#xff09;。有思维标志、信息标志&#xff0c;单纯标志、组合…

温泉酒店网站建设方案英文网站优化

今天发现一个很有意思的问题&#xff0c;正常解决项目中产生的循环依赖&#xff0c;是找出今天添加的注入代码&#xff0c;然后一个个加lazy试过去&#xff0c;会涉及到类中新增的注入 但是今天修改了某个serviceimpl的方法&#xff0c;加入了Async方法后 就发生循环依赖了 ai…

河北网站建设推广自己做的网站怎么发布视频教程

一、说明 本系列是关于学习如何使用 ROS2、Docker 和 Github 设计、设置和维护机器人项目。 先决条件 — ROS2 软件包的基本知识、实现发布者、订阅者、操作并连接它们。 我们之前在 ROS2 中了解了不同的部分。但是&#xff0c;在我们转向实际的基于硬件的项目之前&#xff0c;…

ChatGPT 在招聘诈骗领域的应用

ChatGPT 在招聘诈骗领域的应用作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客 zhihu Github 公众号:一本正经的瞎扯事件经过 整个八月我都没有上班,在等待新的工作签证审批通过。 工作签证有…

FR报表下拉框高度(JS添加css样式方式)调整

FR报表下拉框高度调整解决方案 问题描述 在FR报表开发中,点击下拉框按钮后,下拉选项列表的高度太小,用户体验不佳。直接使用 $(.fr-combo-list).css("height","400px") 设置高度往往不生效,因…