寒假开始的第一场训练赛,一共过掉了4题。
L - House Building
思路:这是一道以minecraft为背景的题,问不同形状立方体裸露的表面积是多少,显然将每一个单元格的高度与四周单位的高度的差之和再加上顶上1个单位的表面积及即为这个单元格裸露的表面积,每个单元格裸露表面积的和即为答案。tips:注意将数组清0,因为没清0WA了一次555
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
int t, n, m;
int c[60][60];
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin >> t;
while(t--){
memset(c, 0, sizeof(c));
int ans = 0;
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> c[i][j];
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(c[i][j] == 0) continue;
if(c[i - 1][j] < c[i][j]) ans += (c[i][j] - c[i - 1][j]);
if(c[i + 1][j] < c[i][j]) ans += (c[i][j] - c[i + 1][j]);
if(c[i][j - 1] < c[i][j]) ans += (c[i][j] - c[i][j - 1]);
if(c[i][j + 1] < c[i][j]) ans += (c[i][j] - c[i][j + 1]);
ans += 1;
}
}
cout << ans << endl;
}
return 0;
}