博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UVA】434-Matty's Blocks
阅读量:7088 次
发布时间:2019-06-28

本文共 1281 字,大约阅读时间需要 4 分钟。

一道非常easy想复杂的题,给出主视图和右视图,计算最少能用几个正方体组成相应的视图,以及最多还能加几块正方体。

求最多加入事实上就是求出最多的正方体数减去最少的,主要就是最少的不好求。

一開始各种模拟就是不正确,之后发现,仅仅须要统计两个视图的高度个数就能够了(简直了)

14390495 Accepted C++ 0.016 2014-10-21 11:35:11

#include
#include
#include
#include
#include
#include
using namespace std;const int maxn = 10;int mat[maxn][maxn];int array[2][maxn];int countx[2][maxn];int n;void display(int x[maxn][maxn]){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++) printf("%d ",x[i][j]); printf("\n"); } return;}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d",&n); memset(countx,0,sizeof(countx)); for(int i = 0; i < 2; i++) for(int j = 0 ;j < n; j++){ scanf("%d",&array[i][j]); countx[i][array[i][j]] ++; } for(int i = 0; i < n; i++) for(int j = 0; j < n;j ++) mat[j][i] = array[0][i]; for(int i = 0,k = n - 1; i < n; i++,k--) //求最大能放几块正方形 for(int j = 0; j < n; j++) if(mat[k][j] > array[1][i]) mat[k][j] = array[1][i]; //display(mat); int _min = 0,_max = 0; for(int i = 0; i < maxn; i++){ _min += max(countx[0][i],countx[1][i]) * i; } for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) _max += mat[i][j]; printf("Matty needs at least %d blocks, and can add at most %d extra blocks.\n",_min,_max-_min); } return 0;}

转载地址:http://gmyql.baihongyu.com/

你可能感兴趣的文章
IGMPv3
查看>>
ZeroMQ(java)之Router/Dealer模式
查看>>
Linux下的文件查找命令
查看>>
TCP/IP协议碎碎念
查看>>
django 将表数据通过API展示到页面上
查看>>
linux用户登录检测发送邮件提醒
查看>>
SQL Server FullText解决Like字句性能问题
查看>>
Ceph实验室:第五课:Ceph运维之换盘
查看>>
C++实践参考——复数类中的运算符重载
查看>>
【Spark Summit East 2017】为了乐趣和利润的全球扩张
查看>>
Rss订阅
查看>>
Mac - gdb配置
查看>>
Vuejs——(4)v-if、v-for
查看>>
让Spark成为你的瑞士军刀
查看>>
[LeetCode]--40. Combination Sum II
查看>>
ART世界探险(16) - 快速编译器下的方法编译
查看>>
多线程常用方法 sleep wait join等以及对锁的控制
查看>>
MPEG-DASH新功能白皮书翻译
查看>>
关于图片在内存中的大小(k或者M)
查看>>
2018 一份"有点难"的iOS面试题(5年iOS开发)
查看>>