2015ACM/ICPC亚洲区长春站————House Building
来源:互联网 发布:信达通证券软件下载 编辑:程序博客网 时间:2024/05/22 02:04
House Building
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1559 Accepted Submission(s): 982
Problem Description
Have you ever played the video game Minecraft? This game has been one of the world's most popular game in recent years. The world of Minecraft is made up of lots of 1×1×1 blocks in a 3D map. Blocks are the basic units of structure in Minecraft, there are many types of blocks. A block can either be a clay, dirt, water, wood, air, ... or even a building material such as brick or concrete in this game.
Figure 1: A typical world in Minecraft.
Nyanko-san is one of the diehard fans of the game, what he loves most is to build monumental houses in the world of the game. One day, he found a flat ground in some place. Yes, a super flat ground without any roughness, it's really a lovely place to build houses on it. Nyanko-san decided to build on an×m big flat ground, so he drew a blueprint of his house, and found some building materials to build.
While everything seems goes smoothly, something wrong happened. Nyanko-san found out he had forgotten to prepare glass elements, which is a important element to decorate his house. Now Nyanko-san gives you his blueprint of house and asking for your help. Your job is quite easy, collecting a sufficient number of the glass unit for building his house. But first, you have to calculate how many units of glass should be collected.
There aren rows and m columns on the ground, an intersection of a row and a column is a 1×1 square,and a square is a valid place for players to put blocks on. And to simplify this problem, Nynako-san's blueprint can be represented as an integer array ci,j(1≤i≤n,1≤j≤m) . Which ci,j indicates the height of his house on the square of i -th row and j -th column. The number of glass unit that you need to collect is equal to the surface area of Nyanko-san's house(exclude the face adjacent to the ground).
Nyanko-san is one of the diehard fans of the game, what he loves most is to build monumental houses in the world of the game. One day, he found a flat ground in some place. Yes, a super flat ground without any roughness, it's really a lovely place to build houses on it. Nyanko-san decided to build on a
While everything seems goes smoothly, something wrong happened. Nyanko-san found out he had forgotten to prepare glass elements, which is a important element to decorate his house. Now Nyanko-san gives you his blueprint of house and asking for your help. Your job is quite easy, collecting a sufficient number of the glass unit for building his house. But first, you have to calculate how many units of glass should be collected.
There are
Input
The first line contains an integer T indicating the total number of test cases.
First line of each test case is a line with two integersn,m .
Then lines that follow describe the array of Nyanko-san's blueprint, the i -th of these lines has m integers ci,1,ci,2,...,ci,m , separated by a single space.
1≤T≤50
1≤n,m≤50
0≤ci,j≤1000
First line of each test case is a line with two integers
The
Output
For each test case, please output the number of glass units you need to collect to meet Nyanko-san's requirement in one line.
题意:求表面积
方法:从最底层开始统计侧面,一层一层统计,这题数据小,所以不会超时。统计完后加上顶面的部分就好了。
下面是ac代码
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>#include<map>#include<set>#include<queue>#include<string>#include<iostream>using namespace std;#define MID(x,y) ((x+y)>>1)#define CLR(arr,val) memset(arr,val,sizeof(arr))#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;const int N=2e5+7;int maps[1111][1111];int main(){//freopen("f:/input.txt", "r", stdin);int zu,n,m,i,j,maxx,sum,k;scanf("%d",&zu);while(zu--){scanf("%d%d",&n,&m);CLR(maps,0);maxx=0;sum=0;for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%d",&maps[i][j]);if(maps[i][j]>maxx) maxx=maps[i][j];if(maps[i][j]!=0) ++sum;}}//printf("%d\n",sum);for(k=1;k<=maxx;k++){//printf("%d\n",sum);for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(maps[i][j]<k) continue;if(maps[i+1][j]<k) ++sum;if(maps[i-1][j]<k) ++sum;if(maps[i][j+1]<k) ++sum;if(maps[i][j-1]<k) ++sum;}}}printf("%d\n",sum);}}
阅读全文
0 0
- 2015ACM/ICPC亚洲区长春站————House Building
- HDU 5538 House Building(矩阵处理 表面积 水)——2015ACM/ICPC亚洲区长春站
- 2015ACM/ICPC亚洲区长春站-重现赛(感谢东北师大)HDU5538 House Building
- HDU 5538.House Building【求表面积】【2015ACM/ICPC亚洲区长春站】【12月30】
- [hdu 5521][2015ACM/ICPC亚洲区长春站] House Building
- 【hdu5538】【2015ACM/ICPC亚洲区长春站 】House Building 题意&题解&代码
- hdu 5538 House Building 2015ACM/ICPC亚洲区长春站-重现赛
- HDU 5538 House Building(2015ACM/ICPC亚洲区长春&&几何体表面积)
- hdu 5538 House Building 巧妙利用数组来模拟(2015ACM/ICPC亚洲区长春站-重现赛 )
- HDU 5531 Rebuild ——— 2015ACM-ICPC亚洲区长春站
- HDU 5531 Rebuild(三分)——2015ACM/ICPC亚洲区长春站
- 2015ACM/ICPC亚洲区长春站 HDU 5532
- 【解题报告】2015ACM/ICPC亚洲区长春站
- 【hdu5527】【2015ACM/ICPC亚洲区长春站 】Too Rich
- 2015ACM/ICPC亚洲区长春站部分题解
- 2015 ACM/ICPC亚洲区长春站 【5/13】
- 2015ACM/ICPC亚洲区长春站【solved:5 / 13】
- HDU 5532 Almost Sorted Array(最长非递减子序列 模板题)——2015ACM/ICPC亚洲区长春站
- 设计模式总结
- Leetcode练习<九> 删除列表中的元素
- PoEdu-Windows班-003 IO
- 为什么有join关联查询,ThinkPHP还要增加关联模型(实例说明)
- LNK2005 连接错误解决办法
- 2015ACM/ICPC亚洲区长春站————House Building
- 分享一套4A公司门户模板(支持响应式与移动APP接入及微信管理强大后台)
- c++入门(多态and纯虚函数and抽象类)
- JSON.stringify()和JSON.parse()的用法
- Redis主从集群的Sentinel配置
- MFC动态链接库
- 无向图 点连通tarjan算法 求割点 + 求BCC以及BCC里面的点 + 求去掉每个点后图中BCC数目 【总结】
- 非局部均值滤波matlab代码理解
- 廖雪峰的Git教程十二-分支管理策略