首页 > 代码库 > House Building---hdu5538(求表面积水题)

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 0x3f3f3f3ftypedef 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;}
View Code

 

House Building---hdu5538(求表面积水题)