洛谷—— P1187 3D模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷—— P1187 3D模型相关的知识,希望对你有一定的参考价值。

https://www.luogu.org/problem/show?pid=1187

题目描述

一座城市建立在规则的n×m网格上,并且网格均由1×1正方形构成。在每个网格上都可以有一个建筑,建筑由若干个1×1×1的立方体搭建而成(也就是所有建筑的底部都在同一平面上的)。几个典型的城市模型如下图所示:

技术分享

现在给出每个网格上建筑的高度,即每个网格上建筑由多少个立方体搭建而成,要求这个建筑模型的表面积是多少。

输入输出格式

输入格式:

 

输入文件的第1行包含2个正整数n和m,为城市模型的长与宽。

接下来n行,每行m个数字字符,描述了网格每个格子高度(可见所有建筑高度都大等于0且小等于9)。

 

输出格式:

 

输出文件包含一个非负整数,为城市模型的表面积。

 

输入输出样例

输入样例#1:
3 3
111
212
111

输出样例#1:
38
输入样例#2:
3 4
1000
0010
0000
输出样例#2:
12

说明

本题有2个测试数据

20%的数据满足:n, m≤10;

40%的数据满足:n, m≤100;

100%的数据满足:n, m≤1000。

 

模拟

 1 #include <cstdio>
 2 
 3 #define max(a,b) (a>b?a:b)
 4 inline void read(int &x)
 5 {
 6     x=0; register char ch=getchar();
 7     for(; ch>9||ch<0; ) ch=getchar();
 8     for(; ch>=0&&ch<=9; ch=getchar()) x=x*10+ch-0;
 9 }
10 const int N(1005);
11 char s[N][N];
12 int fx[4]={0,1,0,-1};
13 int fy[4]={1,0,-1,0};
14 int n,m,mat[N][N],H;
15 int if_[N][N],ans,cnt;
16 
17 int Presist()
18 {
19     read(n),read(m);
20     for(int i=1; i<=n; ++i) scanf("%s",s[i]+1);
21     for(int i=1; i<=n; ++i)
22       for(int j=1; j<=m; ++j)
23         mat[i][j]=s[i][j]-0,H=max(H,mat[i][j]);
24     for(int h=1; h<=H; ++h)
25     {
26         for(int i=1; i<=n; ++i)
27          for(int j=1; j<=m; ++j)
28           if(mat[i][j]>=h)
29           {
30               ans+=6;
31               if(if_[i][j]==h-1&&h-1>0) cnt++;
32               if_[i][j]=h;
33             for(int k=0; k<4; ++k)
34             {
35                 int x=i+fx[k],y=j+fy[k];
36                 if(x<1||y<1||x>n||j>m) continue;
37                 if(mat[x][y]>=h) ans--;
38             }
39           }
40         ans-=cnt*2;cnt=0;
41     }
42     printf("%d\n",ans);
43     return 0;
44 }
45 
46 int Aptal=Presist();
47 int main(int argc,char*argv[]){;}

 

以上是关于洛谷—— P1187 3D模型的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P1187 3D模型

怎么通过程序控制unity3d人物动作

unity3d游戏开发学习分享之表面着色器讲解

12mmaction2 行为识别商用级别X3D复现 demo实现 检测自己的视频 Expanding Architecturesfor Efficient Video Recognition(代码片段

洛谷 P3437 [POI2006]TET-Tetris 3D

Unity3D之Mecanim动画系统学习笔记:认识Mecanim动画系统