B4451 [GESP202512 四级] 建造 题解

发布时间:2026/7/17 21:47:06
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,≤。AC代码#includebits/stdc.h using namespace std; int n,m,k,x0; int a[1010][1010]; bool f(int x,int y){ if(x-yk){ return true; } else{ return false; } } int main(){ cinnmk;; for(int i0;in;i){ for(int j0;jm;j){ cina[i][j]; } } for(int i1;in-1;i){ for(int j1;jm-1;j){ int m1max(a[i-1][j-1],max(a[i-1][j],max(a[i-1][j1],max(a[i][j-1],max(a[i][j],max(a[i][j1],max(a[i1][j-1],max(a[i1][j],a[i1][j1])))))))); int m2min(a[i-1][j-1],min(a[i-1][j],min(a[i-1][j1],min(a[i][j-1],min(a[i][j],min(a[i][j1],min(a[i1][j-1],min(a[i1][j],a[i1][j1])))))))); int sa[i-1][j-1]a[i-1][j]a[i-1][j1]a[i][j-1]a[i][j]a[i][j1]a[i1][j-1]a[i1][j]a[i1][j1]; if(f(m1,m2)){ xmax(x,s); } } } coutx; return 0; }