House Building---hdu5538(求表面积水题)
Posted 西瓜不懂柠檬的酸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了House Building---hdu5538(求表面积水题)相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5538
题意:有一个三维的图形,先给出平面图是n*m的矩形,每个位置都有不同个数的方块,a[i][j]代表当前位置有a[i][j]个方块,就是高度;现要求三维图形的表面积,方块的边长为1;
简单的水题,直接看一下每个位置的方块有几个面可以漏出来就可以了;
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<vector> #include<queue> #include<set> using namespace std; #define met(a, b) memset(a, b, sizeof(a)) #define N 105 #define INF 0x3f3f3f3f typedef long long LL; int dir[4][2] = { {1,0}, {-1,0}, {0,1}, {0,-1} }; int a[N][N]; int main() { int T, n, m; LL ans; scanf("%d", &T); while(T--) { met(a, 0); scanf("%d %d", &m, &n); for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) scanf("%d", &a[i][j]); } ans = 0; for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { if(a[i][j] == 0)continue; ans += 1;///最上层的一个; for(int k=0; k<4; k++) { int x = i+dir[k][0]; int y = j+dir[k][1]; ans += max(0, a[i][j] - a[x][y]); } } } printf("%I64d\n", ans); } return 0; }
以上是关于House Building---hdu5538(求表面积水题)的主要内容,如果未能解决你的问题,请参考以下文章
HDU 5538 House Building(模拟——思维)