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

B4451 [GESP202512 四级] 建造

前言

这题说是枚举,还要优化

题目来源

B4451 [GESP202512 四级] 建造 - 洛谷

题目描述

小 A 有一张 M 行 N 列的地形图,其中第 i 行第 j 列的数字 aij​ 代表坐标 (i,j) 的海拔高度。

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

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

输入格式

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

之后 M 行,第 i 行包含 N 个整数 ai1​,ai2​,…,aiN​,代表坐标 (i,j) 的高度。

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

输出格式

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

输入输出样例

输入 #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≤,1≤H,aij​≤

分析

范围小于1e3,所以时间复杂度应为O()

#include <bits/stdc++.h> using namespace std; const int maxn=1e3+5; int a[maxn][maxn]; int b[maxn][maxn];//3*3范围内最小数 int c[maxn][maxn];//3*3范围内最大数 int d[maxn][maxn];//3*3范围内数之和 int main() { int n,m,h; cin>>n>>m>>h; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { cin>>a[i][j]; b[i][j]=max(b[i][j],a[i][j]); b[i+1][j]=max(b[i+1][j],a[i][j]); b[i+2][j]=max(b[i+2][j],a[i][j]); b[i][j+1]=max(b[i][j+1],a[i][j]); b[i][j+2]=max(b[i][j+2],a[i][j]); b[i+1][j+1]=max(b[i+1][j+1],a[i][j]); b[i+1][j+2]=max(b[i+1][j+2],a[i][j]); b[i+2][j+1]=max(b[i+2][j+1],a[i][j]); b[i+2][j+2]=max(b[i+2][j+2],a[i][j]); if(c[i][j]) c[i][j]=min(c[i][j],a[i][j]); if(!c[i][j]) c[i][j]=a[i][j]; if(c[i+1][j]) c[i+1][j]=min(c[i+1][j],a[i][j]); if(!c[i+1][j]) c[i+1][j]=a[i][j]; if(c[i+2][j]) c[i+2][j]=min(c[i+2][j],a[i][j]); if(!c[i+2][j]) c[i+2][j]=a[i][j]; if(c[i][j+1]) c[i][j+1]=min(c[i][j+1],a[i][j]); if(!c[i][j+1]) c[i][j+1]=a[i][j]; if(c[i][j+2]) c[i][j+2]=min(c[i][j+2],a[i][j]); if(!c[i][j+2]) c[i][j+2]=a[i][j+2]; if(c[i+1][j+1]) c[i+1][j+1]=min(c[i+1][j+1],a[i][j]); if(!c[i+1][j+1]) c[i+1][j+1]=a[i][j]; if(c[i+1][j+2]) c[i+1][j+2]=min(c[i+1][j+2],a[i][j]); if(!c[i+1][j+2]) c[i+1][j+2]=a[i][j]; if(c[i+2][j+1]) c[i+2][j+1]=min(c[i+2][j+1],a[i][j]); if(!c[i+2][j+1]) c[i+2][j+1]=a[i][j]; if(c[i+2][j+2]) c[i+2][j+2]=min(c[i+2][j+2],a[i][j]); if(!c[i+2][j+2]) c[i+2][j+2]=a[i][j]; d[i][j]+=a[i][j]; d[i+1][j]+=a[i][j]; d[i+2][j]+=a[i][j]; d[i][j+1]+=a[i][j]; d[i][j+2]+=a[i][j]; d[i+1][j+1]+=a[i][j]; d[i+1][j+2]+=a[i][j]; d[i+2][j+1]+=a[i][j]; d[i+2][j+2]+=a[i][j]; } } int g=0; for(int i=2; i<n; i++) { for(int j=2; j<m; j++) { if(b[i][j]-c[i][j]<=h) { g=max(g,d[i][j]); } } } cout<<g; return 0; }
http://www.jsqmd.com/news/440479/

相关文章:

  • day1-5德语英语b2
  • 逆向工程与二次开发:从一个 Java 大作业项目的改造之旅
  • 基于Simulink模块搭建下4-DPSK通过AWGN下的误码率和误比特率仿真(源码+lw+部署文档+讲解等)
  • 提示工程架构师的AI上下文工程长短期记忆机制设计秘籍大公开
  • 对使用的屏幕的整理
  • 多径衰落信道下OFDM传输信道估计算法误码率比较(源码+lw+部署文档+讲解等)
  • 搜维尔科技:Manus数据手套登录人工智能大会-构建下一代远程操控基础
  • ollama本地模型使用
  • 探索大数据领域数据产品的发展前景
  • BISHI92 【模板】前缀函数(kmp)
  • 2026年角钢厂家实力推荐榜:镀锌角钢/S355J0/AH36/Q355B/5#角钢/S275/Q420/电钢角钢/欧标日标角钢,精选源头工厂,坚固耐用的结构之选! - 品牌企业推荐师(官方)
  • 2024智能家居Agentic AI技术白皮书解读:提示工程架构师划重点
  • 告别“美丽刑具”!2026职场女性“久穿不累”高跟鞋选购全攻略 - 数字营销分析
  • 虚拟环境工具下创建独立的 3.11 环境 - yi
  • 旺旺的零食健康吗?从爱至尊、Want Power、FixXBody,看旺旺如何布局“更轻负担”零食 - Top品牌推荐官
  • jenkins对接gitlab
  • Flutter 三方库 vane 的鸿蒙化适配指南 - 构建工业级 Dart 服务端、中间件驱动的高性能 API、鸿蒙全栈开发实战
  • 阿里oceanbase-ce:纯纯手工创建实例、初始化 ...
  • C#静态构造函数真的总是最先执行吗?
  • 每日一题:什么是限流?.NET 中如何实现?
  • 前后端交互中时间的格式化与解析,将会面临哪些问题?
  • yolo go onnx
  • 2026.3.5总结 安装claude code 并在vscode上调用
  • gcsfuse中的锁与偏序理论
  • 大模型训练的硬件基础:GPU内存层级、分块与并行策略
  • 2026新春零食囤货推荐:《旺旺大礼包》种类多性价比高的新年限定年味零食大礼包 - Top品牌推荐官
  • 2026全国最新纯磷虾油品牌推荐 - 十大品牌榜
  • 在云主机上安装openclaw
  • 笔耕不辍,聊聊 7 种实现异步编程的方式
  • 静态链接程序的执行流程分析