当前位置: 首页 > news >正文

week3-[二维数组]小方块

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.xdnf.cn/news/1348507.html

相关文章:

  • ArrayList线程不安全问题及解决方案详解
  • 硬件驱动---linux内核驱动 启动
  • 云原生俱乐部-k8s知识点归纳(7)
  • RCE的CTF题目环境和做题复现第4集
  • Unreal Engine UActorComponent
  • base64认识实际使用
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-2
  • LLM实践系列:利用LLM重构数据科学流程01
  • 简单聊聊多模态大语言模型MLLM
  • LeetCode100 -- Day4
  • RCE的CTF题目环境和做题复现第3集
  • RoboTwin--CVPR2025--港大--2025.4.17--开源
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • Python精确小数计算完全指南:从基础到金融工程实践
  • 二、高可用架构(Nginx + Keepalived + MySQL 主从)
  • StarRocks启动失败——修复全流程
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
  • 【COMSOL】Comsol学习案例时的心得记录分享(三)
  • 期货Level2五档订单簿0.25秒级高频分时及日频历史行情数据使用指南
  • 刷题日记0822
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)
  • uboot添加ping命令的响应处理
  • 音视频处理工作室:实时通信的媒体层设计
  • Paddle3D-PETRv1 精度测试与推理实践指南
  • 容器安全实践(一):概念篇 - 从“想当然”到“真相”
  • 车载诊断架构 --- EOL引起关于DTC检测开始条件的思考
  • Mongodb操作指南
  • 大麦盒子DM4036-精简固件包及教程
  • 2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
  • 电脑端完全免费的动态壁纸和屏保软件(真正免费、无广告、无会员)