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

 

以上是关于House Building---hdu5538(求表面积水题)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5538 House Building(模拟——思维)

HDU-5538 House Building

HDU 5538 House Building 瞎搞

hdu 5538 House Building(长春现场赛——水题)

HDU_5538_House Building

hdu 5538 House Building 矩阵表面积