week3-[二维数组]小方块

题目描述

如果四个数 a,b,c,da,b,c,da,b,c,d 可以分成两组,每组两个数,满足每组里面的两个数一样,那么称这四个数是好的。

比如,2,5,2,52,5,2,52,5,2,5 是好的,因它满足两组:222222 两个数一样,555555 两个数一样。

给定一个 nnnmmm 列的二维数组 ai,ja_{i,j}ai,j,有多少对 x,yx,yx,y 满足 ax,y,ax+1,y,ax,y+1,ax+1,y+1a_{x,y}, a_{x+1,y}, a_{x,y+1}, a_{x+1,y+1}ax,y,ax+1,y,ax,y+1,ax+1,y+1 是好的?

输入格式

输入共 n+1n + 1n+1 行。

111222 个正整数 n,mn,mn,m

接下来 nnn 行,每行 mmm 个用空格隔开的正整数 ai,ja_{i,j}ai,j

输出格式

输出共 111111 个整数表示答案。

样例 #1

样例输入 #1

2 4
1 2 3 2
2 3 2 3

样例输出 #1

2

提示

样例解释 111

x=1,y=1x = 1, y = 1x=1,y=1:四个数分别为 1,2,2,31,2,2,31,2,2,3,不是好的。

x=1,y=2x = 1, y = 2x=1,y=2:四个数分别为 2,3,3,22,3,3,22,3,3,2,是好的。

x=1,y=3x = 1, y = 3x=1,y=3:四个数分别为 3,2,2,33,2,2,33,2,2,3,是好的。

不能有 x=2x = 2x=2 或者 y=4y = 4y=4,因为这样的话就没有四个数了。

数据范围

对于所有数据,1≤n,m,ai,j≤1001\leq n,m,a_{i,j}\leq 1001n,m,ai,j100

这题是典型的 2×2 小方块匹配问题。核心是判断 四个数是否能分成两组,每组两个数相等


🔎 分析

1️⃣ 判断“好”的条件

设四个数为 a,b,c,da, b, c, da,b,c,d,它们是“好”的有几种可能:

  1. 两两相等
    • (a == b && c == d)
    • (a == c && b == d)
    • (a == d && b == c)

如果满足其中任意一种,就是好的。

注意顺序不重要,四个数中每组两个相等即可。


2️⃣ 枚举所有 2×2 方块

  • 遍历 i = 0..n-2
  • 遍历 j = 0..m-2
  • 四个数:a[i][j], a[i+1][j], a[i][j+1], a[i+1][j+1]
  • 判断是否好 → 累加计数

🖥️ C++ 实现

#include <bits/stdc++.h>
using namespace std;int main() {int n,m;cin >> n >> m;vector<vector<int>> a(n, vector<int>(m));for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin >> a[i][j];int cnt = 0;for(int i=0;i<n-1;i++){for(int j=0;j<m-1;j++){int x1 = a[i][j], x2 = a[i+1][j], x3 = a[i][j+1], x4 = a[i+1][j+1];if ((x1==x2 && x3==x4) ||(x1==x3 && x2==x4) ||(x1==x4 && x2==x3)) {cnt++;}}}cout << cnt << endl;return 0;
}

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

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

相关文章

Swift 项目结构详解:构建可维护的大型应用

Swift 项目结构详解&#xff1a;构建可维护的大型应用一、基础结构&#xff08;推荐新手使用&#xff09;二、组件化结构&#xff08;企业级应用推荐&#xff09;层级架构&#xff1a;MVVM Coordinator路由实现&#xff08;Coordinator模式&#xff09;三、通用组件实现DI&…

【实时Linux实战系列】基于实时Linux的数字转换器设计

在现代电子系统中&#xff0c;数字转换器&#xff08;如模数转换器ADC和数模转换器DAC&#xff09;扮演着至关重要的角色。它们负责将模拟信号转换为数字信号&#xff0c;或将数字信号转换为模拟信号&#xff0c;从而实现信号的数字化处理和传输。在实时系统中&#xff0c;如工…

FastTracker:实时准确的视觉跟踪

摘要 https://arxiv.org/pdf/2508.14370 传统的多目标跟踪(MOT)系统主要设计用于行人跟踪&#xff0c;通常对其他物体类别的泛化能力有限。本文提出了一种能够处理多种物体类型的通用跟踪框架&#xff0c;特别强调在复杂交通场景中的车辆跟踪。所提出的1方法包含两个关键组件&a…

国产轻量级桌面GIS软件Snaplayers从入门到精通(20)

国产轻量级桌面GIS软件Snaplayers实操&#xff1a;打开图层并显示属性信息1、根据数据格式选择图层文件2、加载图层到地图中&#xff0c;并在左侧显示图层的属性表格3、属性表格分页显示Snaplayers研发团队承诺&#xff1a;国产轻量级桌面GIS软件Snaplayers永久免费并持续更新

快速入门flask应用(从入门到实战)

目录 前言&#xff1a; 了解一些网络通信的概念 什么是网络通信&#xff1a; 当我们访问一个网址的时候发生了什么&#xff1a; 1. 解析 URL&#xff1a;明确访问目标 2. DNS 域名解析&#xff1a;将 “名字” 转为 “地址” 3. 建立连接&#xff1a;TCP 三次握手&#x…

C++/QT 开发技能树详解

一、 编程语言 (C)1. C基础语法&#xff08;数据类型、模板、命名空间&#xff09;是什么&#xff1a; 这是构建C程序的基石。数据类型定义了变量存储的数据种类和大小&#xff1b;模板允许编写与数据类型无关的通用代码&#xff1b;命名空间用于避免大型项目中的名称冲突。如何…

Java多线程进阶-死锁与面试题解析

文章目录Java多线程进阶&#xff1a;死锁与面试题解析一、并发编程的噩梦——死锁1. 什么是死锁&#xff1f;四个缺一不可的条件2. 如何避免死锁&#xff1f;从破坏循环等待开始二、并发编程面试题全景解析1. 锁与同步机制2. CAS 与原子操作3. JUC 工具与线程池4. 线程安全集合…

ZYNQ启动流程——ZYNQ学习笔记11

ZYNQ SoC 的启动由片上的 BootROM 开始。片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器&#xff0c;它包含了 ZYNQ 所支持的配置器件的驱动&#xff0c; 而且里面的代码是不可修改的。 BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件&#xff0c; 头文件里…

C++利用CerateProcess创建WPF进程并通过命名管道通讯

引言原因是我需要在C程序中调用另外一个WPF窗体打开或则关闭&#xff0c;进程之前通过通讯协议进行交互。由于使用不同语言开发&#xff0c;两者都比较复杂不方便重写&#xff0c;最方便的方法就是使用进程间通信&#xff0c;WPF窗体应用程序根据消息进行Show/Hide/Exit操作。函…

Seaborn数据可视化实战

1. Seaborn基础与实践&#xff1a;数据可视化的艺术 2. Seaborn入门&#xff1a;环境搭建与基础操作 3. Seaborn基础图表绘制入门 4. Seaborn数据可视化基础&#xff1a;从内置数据集到外部数据集的应用 5. Seaborn颜色与样式定制教程 6. Seaborn数据可视化入门&#xff1a;绘制…

BIM+写实数字孪生落地实战指南

&#x1f31f; 正文 在智慧城市与工业4.0的浪潮中&#xff0c;BIM与数字孪生的深度碰撞正在重塑建筑的生命周期。基于Revit&#xff08;RVT&#xff09;模型构建的超写实数字孪生体&#xff0c;不仅实现物理空间的毫米级镜像&#xff0c;更通过实时数据驱动&#xff0c;赋予建…

[Git] 如何拉取 GitHub 仓库的特定子目录

作为开发者&#xff0c;我们经常遇到只需要克隆大型仓库中某个子目录的场景。 Git 本身并不支持直接克隆子目录&#xff0c;但通过一些技巧可以实现类似效果。本文将介绍几种实用的方法&#xff0c;帮助获取目标代码。 为什么需要局部拉取&#xff1f; 节省时间和带宽&#xff…

修复Simulink到UE5丢包时被控船体的残影问题

提问 simulink 有一个和UE5协同的模块&#xff0c;叫做Simulation 3D Scence Configuration&#xff0c;还有一个发送来自simulink到UE5数据的模块叫做Simulation 3D Message。 现在遇到的问题是&#xff0c;这两个模块的优先级设置是正确的&#xff0c;且sample time都设置为0…

嵌入式第三十五课!!Linux下的网络编程

一、目的网络编程的目的实际上也是进程通信的一种方式&#xff0c;不过它可以在不同的主机上进行通信&#xff1b;二、需要解决的问题1. 主机与主机之间物理层面必须互联互通。指的是参与通信的计算机&#xff08;主机&#xff09;需要通过物理设备建立连接&#xff08;光纤、网…

遥感机器学习入门实战教程|Sklearn案例⑦:特征选择与重要性分析

很多同学问&#xff1a;波段/特征一多就“维度灾难”&#xff0c;训练慢、过拟合&#xff0c;且很难解释“哪些特征最关键”。本篇用 sklearn 给出一套能跑、可视化、可比较的最小工作流&#xff0c;并配上方法论速记&#xff0c;帮助你在高光谱/多特征任务里做出稳健筛选。 &a…

地理数据制备:蔚蓝地图空气质量数据的获取、清洗与坐标匹配指南

【&#x1f4ca;】手把手攻略&#xff1a;如何从“蔚蓝地图”挖宝——获取济南市可用空气质量数据全记录 一份不需要写代码也能搞定环境数据获取的实用指南 ✨ 引言&#xff1a;为什么选择蔚蓝地图&#xff1f; 作为一名环境数据爱好者&#xff0c;我经常需要获取准确、可靠、…

Unreal Engine USceneComponent

Unreal&#x1f3db; Unreal Engine - USceneComponent&#x1f4da; 定义&#x1f3f7; 类继承⚡ 关键特性⚙️ 常见配置&#x1f6e0;️ 使用方法&#x1f517; 创建与挂载&#x1f504; 获取与修改 Transform&#x1f9e9; 附加/分离组件&#x1f3ca; 典型应用场景&#x1…

2025年9月5090工作站、

在深度学习与大模型训练领域&#xff0c;算力是决定研发效率与模型性能的核心要素&#xff0c;而显卡作为算力输出的核心硬件&#xff0c;其性能参数直接影响着训练任务的速度、稳定性与成本控制。对于企业与科研机构而言&#xff0c;选择一套适配自身需求且性价比优异的显卡及…

亚矩阵云手机:亚马逊第三方店铺多账号安全合规运营的核心技术支撑

亚矩阵云手机在亚马逊第三方店铺多账号安全合规运营的技术支持&#xff0c;通过硬件级虚拟化、AI 行为建模、动态资源调度三大核心技术模块&#xff0c;构建了覆盖设备、网络、行为、数据的四维防御体系&#xff0c;确保账号在亚马逊平台规则下的长期稳定运行。以下从技术架构、…

使用C++11改进工厂方法模式:支持运行时配置的增强实现

在软件开发中&#xff0c;工厂方法模式是一种常用的设计模式&#xff0c;用于创建对象。通过使用C11的新特性&#xff0c;我们可以进一步改进工厂方法模式&#xff0c;使其更加灵活和高效。本文将详细介绍如何使用C11的std::function、lambda表达式和智能指针来实现一个支持运行…