news 2026/4/15 16:04:31

2025年12月GESP(C++四级): 建造

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年12月GESP(C++四级): 建造

2025年12月GESP(C++四级): 建造

题目描述

小 A 有一张M MMN NN列的地形图,其中第i ii行第j jj列的数字a i j a_{ij}aij代表坐标( i , j ) (i, j)(i,j)的海拔高度。

停机坪为一个3 × 3 3 \times 33×3的区域,且内部所有9 99个点的最大高度和最小高度之差不超过H HH

小 A 想请你计算出,在所有适合建造停机坪的区域中,区域内部9 99个点海拔之和最大是多少。

输入格式

第一行三个正整数M , N , H M, N, HM,N,H,含义如题面所示。

之后M MM行,第i ii行包含N NN个整数a i 1 , a i 2 , … , a i N a_{i1}, a_{i2}, \dots, a_{iN}ai1,ai2,,aiN,代表坐标( i , j ) (i, j)(i,j)的高度。

数据保证总存在一个适合建造停机坪的区域。

输出格式

输出一行,代表最大的海拔之和。

输入输出样例 1
输入 1
5 5 3 5 5 5 5 5 5 1 5 1 5 5 5 5 5 5 5 2 5 2 5 3 5 5 5 2
输出 1
40
数据范围

对于所有测试点,保证1 ≤ M , N ≤ 10 3 1 \leq M, N \leq 10^31M,N1031 ≤ H , a i j ≤ 10 5 1 \leq H, a_{ij} \leq 10^51H,aij105

思路分析

这个问题要求在 M×N 的地形图中,找到一个 3×3 的区域,满足区域内9个点中最大高度和最小高度之差不超过 H,并且在所有满足条件的区域中找到海拔之和最大的区域。

核心思想
  1. 暴力枚举法:遍历所有可能的 3×3 区域的左上角坐标
  2. 边界条件:由于是 3×3 区域,左上角坐标范围为(1 ≤ i ≤ m-2, 1 ≤ j ≤ n-2)
  3. 条件检查:对每个区域,计算最大值和最小值,检查差值是否 ≤ H
  4. 求和计算:对符合条件的区域计算9个点的和,并更新最大值
时间复杂度
  • 外层循环:O((M-2)×(N-2)) ≈ O(M×N)
  • 内层循环:固定 9 次操作(3×3 区域)
  • 总复杂度:O(M×N),在 M,N ≤ 1000 时是可行的

代码实现

#include<bits/stdc++.h>usingnamespacestd;intm,n,h,ans=0,a[1010][1010];// 检查以(x,y)为左上角的3×3区域是否满足高度差条件boolcheck(intx,inty){intmaxh=a[x][y];// 最大值初始化为第一个元素intminh=a[x][y];// 最小值初始化为第一个元素// 遍历3×3区域的所有9个点for(inti=x;i<=x+2;i++){for(intj=y;j<=y+2;j++){maxh=max(maxh,a[i][j]);// 更新最大值minh=min(minh,a[i][j]);// 更新最小值}}// 判断最大高度差是否不超过Hreturnmaxh-minh<=h;}// 计算以(x,y)为左上角的3×3区域的海拔之和intsum(intx,inty){intres=0;// 遍历3×3区域的所有9个点并累加for(inti=x;i<=x+2;i++){for(intj=y;j<=y+2;j++){res+=a[i][j];}}returnres;}intmain(){// 输入数据规模cin>>m>>n>>h;// 输入地形图数据for(inti=1;i<=m;i++){for(intj=1;j<=n;j++){cin>>a[i][j];}}// 枚举所有可能的3×3区域的左上角// i的范围:1 到 m-2(保证向下有3行)// j的范围:1 到 n-2(保证向右有3列)for(inti=1;i<=m-2;i++){for(intj=1;j<=n-2;j++){// 如果当前区域满足高度差条件if(check(i,j)){// 计算区域和并更新最大值ans=max(ans,sum(i,j));}}}// 输出最大海拔和cout<<ans;return0;}

功能分析

1.数据结构
  • 使用二维数组a[1010][1010]存储地形图
  • 数组大小定义为 1010×1010,满足 M,N ≤ 1000 的要求
2.核心函数
  • check(x, y):检查指定区域是否满足建造条件
    • 时间复杂度:O(9) = O(1)
    • 空间复杂度:O(1)
  • sum(x, y):计算指定区域的海拔总和
    • 时间复杂度:O(9) = O(1)
    • 空间复杂度:O(1)
3.算法流程
1. 读取输入:M, N, H 和地形图数据 2. 遍历所有可能的3×3区域左上角坐标 - 对每个区域调用check()检查是否满足条件 - 如果满足,调用sum()计算海拔和并更新最大值 3. 输出找到的最大海拔和
4.边界处理
  • 循环条件i <= m-2j <= n-2确保3×3区域不越界
  • 题目保证至少存在一个满足条件的区域,所以ans一定有值
5.复杂度分析
  • 时间复杂度:O(M×N × 9) ≈ O(9MN) = O(MN)
  • 空间复杂度:O(MN) 用于存储地形图

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 5:45:17

Blender插件开发:集成lora-scripts生成3D贴图

Blender插件开发&#xff1a;集成lora-scripts生成3D贴图 在数字艺术创作的前线&#xff0c;一个老问题始终困扰着3D艺术家&#xff1a;如何快速、一致地为模型赋予风格化的纹理&#xff1f;传统流程中&#xff0c;从UV展开到手绘贴图&#xff0c;再到材质调整&#xff0c;每一…

作者头像 李华
网站建设 2026/4/16 5:44:14

STM32CubeMX入门教程:ADC采集配置从零实现过程

手把手带你用STM32CubeMX搞定ADC采集&#xff1a;从零开始的实战指南你有没有遇到过这样的场景&#xff1f;手头有个温度传感器、光敏电阻或者压力变送器&#xff0c;想把它接到STM32上读出数据&#xff0c;结果翻手册看到一堆ADC_CR2、SMPR1寄存器就头大了——每个位代表什么&…

作者头像 李华
网站建设 2026/4/16 5:42:46

LVGL界面编辑器与STM32结合的实战案例

用LVGL界面编辑器打造流畅嵌入式GUI&#xff1a;STM32实战全解析 你有没有过这样的经历&#xff1f;花了一周时间手动写代码&#xff0c;终于把一个带按钮、标签和进度条的界面“拼”出来&#xff0c;结果设计师看了一眼说&#xff1a;“颜色不对&#xff0c;布局要改。”于是你…

作者头像 李华
网站建设 2026/4/16 5:39:27

LoRA Rank参数详解:4~16之间如何选择最优值?

LoRA Rank参数详解&#xff1a;4~16之间如何选择最优值&#xff1f; 在如今的大模型时代&#xff0c;微调一个百亿甚至千亿参数的模型似乎成了“富人游戏”——动辄上百GB显存、多卡并行训练、几天不眠不休的等待。然而&#xff0c;LoRA&#xff08;Low-Rank Adaptation&#x…

作者头像 李华
网站建设 2026/4/16 5:38:56

STC89C52串口通信实验与上位机通信实战

从零构建STC89C52串口通信系统&#xff1a;实战详解与避坑指南你有没有遇到过这样的场景&#xff1f;单片机跑起来了&#xff0c;LED也在闪&#xff0c;但你根本不知道它内部到底发生了什么。想改个参数还得重新烧程序&#xff0c;调试效率低得令人抓狂。这时候&#xff0c;串口…

作者头像 李华
网站建设 2026/4/15 19:27:50

量子计算时代C++内存优化秘籍,99%工程师都不知道的底层优化策略

第一章&#xff1a;量子计算时代C内存优化的挑战与机遇随着量子计算从理论走向工程实现&#xff0c;传统高性能计算语言如C正面临前所未有的内存管理挑战。在量子算法模拟、量子态叠加计算等场景中&#xff0c;经典内存模型需应对指数级增长的状态空间&#xff0c;这对C的内存分…

作者头像 李华