[二维前缀和]最大纯色正方形

题目描述

铺砖的工人来到一个操场,将整个操场按正方形铺砖(整个操场可视为R行C列的矩阵,矩阵的每个元素为一块正方形砖块),正方形砖块有两种,一种为蓝色,另一种为红色。请你写一个程序求出为最大纯色正方形的面积。

输入格式

第一行两个正整数R和C。 接下来R行C列描述整个操场,红色砖块用1来表示,蓝色砖块用0来表示。

输出格式

一个数,表示最大纯色正方形的面积。

样例输入/输出

输入数据 1

5 8
0 0 0 1 1 1 0 1
1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1
1 0 1 1 1 1 1 0
1 1 1 0 1 1 0 1

输出数据 1

9

数据规模与提示

100%的数据R,C<=200;

时间限制:1s.

内存限制:128MB.

解!!!

这道题可以使用二维前缀和来解决。

首先,我们需要构建一个二维前缀和的数组sum,sum[i][j]表示以(i,j)为右下角的正方形区域内的红色砖块的数量。

我们可以通过以下方式构建sum数组:

1. 遍历每个格子(i,j),将砖块的颜色e[i][j]保存到数组中,并计算sum[i][j]的值:

sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + e[i][j]

这样,sum数组的每个元素就表示了以(i,j)为右下角的正方形区域内的红色砖块的数量。

接下来,我们需要从最大可能的正方形大小开始遍历,找到一个满足条件的正方形。

假设最大可能的正方形大小为n,我们从n开始递减遍历,对于每个正方形大小k,我们从左上角的位置(x,y)开始遍历操场区域。

具体的遍历方式如下:

1. 遍历所有可能的左上角位置(x,y),满足条件x+k-1<=a且y+k-1<=b(保证正方形不超出操场的范围)。

2. 对于每个左上角位置(x,y),计算右下角位置(x2,y2):x2=x+k-1,y2=y+k-1。

3. 计算以(x2,y2)为右下角的正方形区域内的红色砖块的数量d:

d = sum[x2][y2] - sum[x-1][y2] - sum[x2][y-1] + sum[x-1][y-1]

4. 如果d等于0或者等于k*k(即整个区域内都是红色砖块或者蓝色砖块),则找到了一个满足条件的正方形,输出其面积k*k。

5. 如果没有找到满足条件的正方形,继续递减正方形大小k,重复步骤2-4。

最后,如果没有找到任何满足条件的正方形,则输出0。

C++代码实现:

#include<bits/stdc++.h>
using namespace std;
long long a,b,e[1000][1000],sum[1000][1000];
int main()
{cin>>a>>b;for(long long i=1;i<=a;i++){for(int j=1;j<=b;j++){cin>>e[i][j];sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+e[i][j];}}long long n=min(a,b);for(int k=n;k>=1;k--){for(int x=1;x+k-1<=a;x++){for(int y=1;y+k-1<=b;y++){long long x2=x+k-1;long long y2=y+k-1;long long d=sum[x2][y2]-sum[x-1][y2]-sum[x2][y-1]+sum[x-1][y-1];if(d==0||d==k*k){cout<<k*k;return 0;}}}}cout<<0;return 0;
}

这样就可以找到最大纯色正方形的面积了。

点个赞吧,帅哥美女们,本人为小学生。

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

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

相关文章

每日OJ题_牛客_最长上升子序列(二)_贪心+二分_C++_Java

目录 牛客_最长上升子序列(二)_贪心二分 题目解析 C代码 Java代码 牛客_最长上升子序列(二)_贪心二分 最长上升子序列(二)_牛客题霸_牛客网 (nowcoder.com) 描述&#xff1a; 给定一个长度为 n 的数组a&#xff0c;求它的最长严格上升子序列的长度。 所谓子序列&#xf…

使用uniapp + Vue3 + uni.createInnerAudioContext()实现播放歌曲及歌词滚动、拖动进度条

一、大致效果 二、使用步骤 1.歌词详情页代码块 <template><view class"play"><view class"play_centent" :style"{ background-image: url( playInfo.siPic ) }"><div class"cover-mask" style"opacit…

无人机维护保养、部件修理更换技术详解

无人机作为一种精密的航空设备&#xff0c;其维护保养和部件修理更换是确保飞行安全、延长使用寿命的重要环节。以下是对无人机维护保养、部件修理更换技术的详细解析&#xff1a; 一、无人机维护保养技术 1. 基础构造理解&#xff1a; 熟悉无人机的基本构造&#xff0c;包括…

解决Redis缓存穿透(缓存空对象、布隆过滤器)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 缓存空对象布隆过滤器结合两种方法 背景 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库 常见的解决方案有两种&#xff0c;分别…

【运动的&足球】足球场景目标检测系统源码&数据集全套:改进yolo11-ASF-P2

改进yolo11-RetBlock等200全套创新点大全&#xff1a;足球场景目标检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.03 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或…

【STM32】GPIO通用输入输出口

文章目录 一、GPIO的概念二、STM32中GPIO的基本结构三、GPIO位结构输入部分分析输出部分分析GPIO的8种模式 四、GPIO相关函数 一、GPIO的概念 GPIO&#xff08;General Purpose Input Output&#xff09;&#xff0c;意为通用输入输出口&#xff0c;在嵌入式系统中&#xff0c;…

stm32疑难杂症之电压不够程序跑飞

在开发阶段&#xff0c;如果出现程序不断重启的情况。 首先先检查是不是代码问题。 1.数组越界。定义的数组只有50个单元&#xff0c;但是程序运行的过程中&#xff0c;却给他赋给50个单元。 2.中断耗时太长&#xff0c;刚出中断又进去了。这时的现象是程序一直在中断中执行…

华为荣耀曲面屏手机下面空白部分设置颜色的方法

荣耀部分机型下面有一块空白区域&#xff0c;如下图红框部分 设置这部分的颜色需要在themes.xml里面设置navigationBarColor属性 <item name"android:navigationBarColor">android:color/white</item>

电子电气架构 --- 整车控制系统

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

STM32 HAL库 SPI驱动1.3寸 OLED屏幕

目录 参考硬件引脚与接线 点亮屏幕CubeMX 配置OLED 驱动程序代码 参考 基于STM32F103C8T6最小系统板HAL库CubeMX SPI驱动7针 OLED显示屏&#xff08;0.96寸 1.3寸通用&#xff09;0.96 oled HAL库驱动 SPI STM32SPI驱动0.96/1.3寸 OLED屏幕&#xff0c;易修改为DMA控制STM32驱…

iOS 18.2 可让欧盟用户删除App Store、Safari、信息、相机和照片应用

升级到 iOS 18.2 之后&#xff0c;欧盟的 iPhone 用户可以完全删除一些核心应用程序&#xff0c;包括 App Store、Safari、信息、相机和 Photos 。苹果在 8 月份表示&#xff0c;计划对其在欧盟的数字市场法案合规性进行更多修改&#xff0c;其中一项更新包括欧盟用户删除系统应…

力扣11.2

2742. 给墙壁刷油漆 给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time &#xff0c;分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠&#xff1a; 一位需要 付费 的油漆匠&#xff0c;刷第 i 堵墙需要花费 time[i] 单位的时间&#xff0c;开销为 cost…

[前端] 为网站侧边栏添加搜索引擎模块

前言 最近想给我的个人网站侧边栏添加一个搜索引擎模块&#xff0c;可以引导用户帮助本站SEO优化&#xff08;让用户可以通过点击搜索按钮完成一次对本人网站的搜索&#xff0c;从而实现对网站的搜索引擎优化&#xff09;。 最开始&#xff0c;我只是想实现一个简单的百度搜索…

nodejs入门教程20:nodejs文件系统

1. 引入fs模块 在Node.js中&#xff0c;你可以通过以下方式引入fs模块&#xff1a; const fs require(fs);2. 文件操作 读取文件 异步读取&#xff1a;使用fs.readFile()方法。该方法接收文件路径和回调函数作为参数&#xff0c;回调函数在文件读取完成后被调用。 fs.rea…

使用AWS Redshift从AWS MSK中读取数据

Amazon Redshift 流式摄取的目的是简化将流式数据直接从流式服务摄取到 Amazon Redshift 或 Amazon Redshift Serverless 的过程。 官方文档[1]中有详细步骤。用unauthenticated, IAM 的方式均可以进行连接&#xff0c;只不过使用的是不同端口&#xff1a;9092或者9098 [1] h…

2-3-4树的层序打印

234树 接前面0到100与B树比较0到50镜像代码更新随机测试后话接前面 红黑树转2-3-4树打印失败的地方。 0到100 这个是应该的样子 >>> rb = RBT() >>> for k in range(100):rb.INSERT(k) >>> t=tree234(rb.root) >>> t.print() 结点类型…

了解AIGC——文本生成技术在新闻媒体中的应用

了解AIGC&#xff1a;文本生成技术在新闻媒体中的应用 引言 生成式人工智能内容&#xff08;AI-Generated Content&#xff0c;简称AIGC&#xff09;在新闻媒体中的应用已经成为技术革新和内容创作的主要方向之一。新闻行业长期依赖于人类记者和编辑的创造力&#xff0c;而AI…

UBUNTU查看CPU核心数

UBUNTU查看CPU核心数 前言一、使用lscpu命令1. 执行命令2. 查看输出 二、使用/proc/cpuinfo文件1. 查看文件2. 解释输出 三、使用nproc命令1. 执行命令2. 查看输出 四、使用htop或top工具1. 使用htop2. 使用top 五、使用inxi命令1. 执行命令2. 查看输出 六、使用图形界面工具1.…

机器学习线性回归

文章目录 1.基本概念2.最小二乘法3.用代码来表示线性回归 1.基本概念 线性回归是一种统计方法&#xff0c;用于分析两个或多个变量之间的关系。其主要目的是通过建立一个线性模型来预测一个因变量&#xff08;或称为目标变量&#xff09;与一个或多个自变量&#xff08;或称为…

基于Openwrt系统架构,实现应用与驱动的实例。

一、在openwrt系统架构&#xff0c;编写helloworld的应用程序。 第一步先创建目录&#xff0c;项目代码要放在 openwrt根目下的 package 目录中&#xff0c;这里源码写在了 hellworld 的 src 目录下&#xff0c;因为外层还有需要编写的文件。 mkdir -p ~/openwrt/package/hel…