有一个 n * n * n 的立方体,其中一些单位立方体已经缺失(剩下部分不一定连通)。每个单位立方体重 1 克,且被涂上单一的颜色(即 6 个面的一颜色相同)。给出前、左、后、右、顶、底 6 个视图,你的任务是判断这个屋里剩下的最大的重量。

看完这题之后,我满头雾水,不知道从何下手。后来模拟了一下数据,才知道怎么解决。

首先,一个单位立方体只有一种颜色,如果从不同的视图看到这个立方体的颜色不同,那么就删除这个立方体。通过这样循环删除,到最后所有的小立方体都符合题目所要求,就是最大的立方体数目,即最大的重量。

附AC代码:

   1: #include <stdio.h>

   2: #include <math.h>

   3: #include <iostream>

   4: #include <cstdarg>

   5: #include <algorithm>

   6: #include <string.h>

   7: #include <stdlib.h>

   8: #include <string>

   9: #include <list>

  10: #include <vector>

  11: #include <map>

  12: #define LL long long

  13: #define M(a) memset(a, 0, sizeof(a))

  14: #define orz(i, k) for(int i = 0; i < k; i++)

  15: using namespace std;

  16:     int n;

  17: void Clean(int count, ...)

  18: {

  19:     va_list arg_ptr;

  20:     va_start (arg_ptr, count);

  21:     for (int i = 0; i < count; i++)

  22:         M(va_arg(arg_ptr, int*));

  23:     va_end(arg_ptr);

  24: }

  25: char Input()

  26: {

  27:     char ch;

  28:     while (1)

  29:     {

  30:         ch = getchar();

  31:         if (ch >= 'A' && ch <= 'Z') return ch;

  32:         else if (ch == '.') return ch;

  33:     }

  34: }

  35:  

  36: void Get(int k, int i, int j, int len, int &x, int &y, int &z)

  37: {

  38:     switch (k)

  39:     {

  40:         case 0: x = len, y = j, z = i; break;

  41:         case 1: x = n - 1 - j, y = len, z = i; break;

  42:         case 2: x = n - 1 - len, y = n - 1 - j, z = i; break;

  43:         case 3: x = j, y = n - 1 - len, z = i; break;

  44:         case 4: x = n - 1 - i, y = j, z = len; break;

  45:         case 5: x = i, y = j, z = n - 1 - len; break;

  46:     }

  47: }

  48:  

  49: char pos[10][10][10];

  50: char view[6][10][10];

  51: int main()

  52: {

  53:     while (~scanf("%d", &n) && n)

  54:     {

  55:         Clean(1, view);

  56:  

  57:         orz(i, n) orz(j, 6) orz(k, n) view[j][i][k] = Input();

  58:         orz(i, n) orz(j, n) orz(k, n) pos[i][j][k] = '#';

  59:         orz(k, 6) orz(i, n) orz(j, n)

  60:         {

  61:             if (view[k][i][j] == '.')

  62:             {

  63:                 orz(l, n)

  64:                 {

  65:                     int x, y, z;

  66:                     Get(k, i, j, l, x, y, z);

  67:                     pos[x][y][z] = '.';

  68:                 }

  69:             }

  70:         }

  71:         while (1)

  72:         {

  73:             bool done = true;

  74:             orz(k, 6) orz(i, n) orz(j, n)

  75:             {

  76:                 orz(l, n)

  77:                 {

  78:                     int x, y, z;

  79:                     Get(k, i, j, l, x, y, z);

  80:                     if (pos[x][y][z] == '.') continue;

  81:                     else if (pos[x][y][z] == '#')

  82:                     {

  83:                         pos[x][y][z] = view[k][i][j];

  84:                         break;

  85:                     }

  86:                     if (pos[x][y][z] == view[k][i][j]) break;

  87:                     pos[x][y][z] = '.';

  88:                     done = false;

  89:                 }

  90:             }

  91:             if (done == true) break;

  92:         }

  93:         int res = 0;

  94:         orz(i, n) orz(j, n) orz(k, n)

  95:             if (pos[i][j][k] != '.') res += 1;

  96:         printf("Maximum weight: %d gram(s)\n", res);

  97:     }

  98:     return 0;

  99: }

(P. S:弄出来之后感觉好有成就感Orz)

LA 2995 Image Is Everything 立方体成像 World Final 2004的更多相关文章

  1. LA 2995 立方体成像(模拟)

    题目链接:https://vjudge.net/problem/UVALive-2995 这道题的主要难点在于三维坐标系的建立,然后在坐标系中进行迭代更新. 注意用宏定义来简化代码. AC代码: #i ...

  2. [ACM_模拟][ACM_数学] LA 2995 Image Is Everything [由6个视图计算立方体最大体积]

    Description   Your new company is building a robot that can hold small lightweight objects. The robo ...

  3. LA 2995 Image Is Everything

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  4. poj2196

    Specialized Four-Digit Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7238   A ...

  5. ZOJ2405 Specialized Four-Digit Numbers 2017-04-18 20:43 44人阅读 评论(0) 收藏

    Specialized Four-Digit Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB Find and list all f ...

  6. OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

    读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...

  7. 数据立方体(Cube)

    如上图所示,这是由三个维度构成的一个OLAP立方体,立方体中包含了满足条件的cell(子立方块)值,这些cell里面包含了要分析的数据,称之为度量值.显而易见,一组三维坐标唯一确定了一个子立方. 多位 ...

  8. 数据立方体----维度与OLAP

    前面的一篇文章——数据仓库的多维数据模型中已经简单介绍过多维模型的定义和结构,以及事实表(Fact Table)和维表(Dimension Table)的概念.多维数据模型作为一种新的逻辑模型赋予了数 ...

  9. CSS3 3D立方体效果-transform也不过如此

    CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...

随机推荐

  1. 2014多校第四场1005 || HDU 4901 The Romantic Hero (DP)

    题目链接 题意 :给你一个数列,让你从中挑选一些数组成集合S,挑另外一些数组成集合T,要求是S中的每一个数在原序列中的下标要小于T中每一个数在原序列中下标.S中所有数按位异或后的值要与T中所有的数按位 ...

  2. ExtJs之Ext.util.Format

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  3. hdu 4768 Flyer 二分

    思路:由于最多只有一个是奇数,所以二分枚举这个点,每次判断这个点的左边区间段所有点的和作为 二分的依据. 代码如下: #include<iostream> #include<cstd ...

  4. 在Jmeter中使用自定义编写的Java测试代码

    我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java ...

  5. AssemblyInfo.cs文件参数具体讲解

    在asp.net中有一个配置文件AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的AssemblyInfo.cs文件的内容具体介绍 //是否符合公共 ...

  6. AcmeAir

    AcmeAir是一款由原 IBM 新技术架构部资深工程师Andrew Spyker,利用Netflix开源的Netflix OSS打造的开源电子商务应用.访问这里可以了解原作者的设计初衷: http: ...

  7. 两个C++对象是否相等,要程序员自己下定义,通常是覆盖==操作符

    我曾经好多年对Java的==和equals的区别和联系搞不清楚,后来搞清楚了,笔记在这里: http://www.cnblogs.com/findumars/p/3240761.htmlhttp:// ...

  8. Android Edittext 显示光标 获取焦点 监听焦点

    Edittext java 代码控制获取焦点 EditText mEditText = (EditText) findViewById(R.id.et); mEditText.setFocusable ...

  9. Python ->> 第一个Python程序

    #coding:utf-8 #print 'input your name, please' #name = raw_input('请输入你的名字:'.decode('utf-8').encode(' ...

  10. .NET责任链模式(混合单例模式,模板方法模式)-----制作与扩展能力验证

    .NET责任链模式.单例模式.模板方法模式混用 前言 哇,看到题目挺长的,这个组合型的东西,到底能干啥呢?本篇文章来一起琢磨琢磨,这两天为了团队的软件赶工,我负责的那一块叫:插件管理器.我们团队的成员 ...