1030 - Image Is Everything (贪心)
Your new company is building a robot that can hold small lightweight objects. The robot will have the intelligence to determine if an object is light enough to hold. It does this by taking pictures of the object from the 6 cardinal directions, and then inferring an upper limit on the object's weight based on those images. You must write a program to do that for the robot.
You can assume that each object is formed from an N×N×N lattice of cubes, some of which may be missing. Each 1×1×1 cube weighs 1 gram, and each cube is painted a single solid color. The object is not necessarily connected.
Input
The input for this problem consists of several test cases representing different objects. Every case begins with a line containing N , which is the size of the object ( 1N10 ). The next N lines are the different N×N views of the object, in the order front, left, back, right, top, bottom. Each view will be separated by a single space from the view that follows it. The bottom edge of the top view corresponds to the top edge of the front view. Similarly, the top edge of the bottom view corresponds to the bottom edge of the front view. In each view, colors are represented by single, unique capital letters, while a period ( . ) indicates that the object can be seen through at that location.
Input for the last test case is followed by a line consisting of the number 0.
Output
For each test case, print a line containing the maximum possible weight of the object, using the format shown below.
Sample Input
3
.R. YYR .Y. RYY .Y. .R.
GRB YGR BYG RBY GYB GRB
.R. YRR .Y. RRY .R. .Y.
2
ZZ ZZ ZZ ZZ ZZ ZZ
ZZ ZZ ZZ ZZ ZZ ZZ
0
Sample Output
Maximum weight: 11 gram(s)
Maximum weight: 8 gram(s)
题意:给定立方体的几个视图的颜色。 '.'代表能看穿,求立方体最多几块。
思路:有'.'的那一行肯定能穿过去。但是还不够,如果两个方向看过去的颜色不一样。当前那块肯定要删掉。按照这样删到不能删为止。就是最重的。
代码:
#include <stdio.h>
#include <string.h>
const int N = 10;
int n, x, y, z;
char view[N][6][N], res[N][N][N]; void tra(int i, int j, int k, int l) {
if (j == 0) {x = i; y = k; z = l;}
if (j == 1) {x = i, y = l; z = n - 1 - k;}
if (j == 2) {x = i; y = n - 1 - k; z = n - 1 - l;}
if (j == 3) {x = i; y = n - 1 - l; z = k;}
if (j == 4) {x = l; y = k; z = n - 1 - i;}
if (j == 5) {x = n - 1 - l; y = k; z = i;}
} void init() {
for (int i = 0; i < n; i ++)
for (int j = 0; j < n; j ++)
for (int k = 0; k < n; k ++)
res[i][j][k] = '#';
for (int i = 0; i < n; i ++)
for (int j = 0; j < 6; j ++) {
for (int k = 0; k < n; k ++) {
scanf("%c", &view[i][j][k]);
if (view[i][j][k] == '.') {
for (int l = 0; l < n; l ++) {
tra(i, j, k, l);
res[x][y][z] = '.';
}
}
}
getchar();
}
} int solve() {
while (1) {
int flag = true;
for (int i = 0; i < n; i ++)
for (int j = 0; j < 6; j ++)
for (int k = 0; k < n; k ++) {
if (view[i][j][k] != '.') {
for (int l = 0; l < n; l ++) {
tra(i, j, k, l);
if (res[x][y][z] == '.') continue;
if (res[x][y][z] == '#')
res[x][y][z] = view[i][j][k];
if (res[x][y][z] == view[i][j][k]) break;
res[x][y][z] = '.';
flag = false;
}
}
}
if (flag) break;
}
int ans = 0;
for (int i = 0; i < n; i ++)
for (int j = 0; j < n; j ++)
for (int k = 0; k < n; k ++)
if (res[i][j][k] != '.')
ans ++;
return ans; } int main() {
while (~scanf("%d%*c", &n) && n) {
init();
printf("Maximum weight: %d gram(s)\n", solve());
}
return 0;
}
1030 - Image Is Everything (贪心)的更多相关文章
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1383 Solved: 582[Submit][St ...
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- BZOJ 1030: [JSOI2007]文本生成器 [AC自动机 DP]
1030: [JSOI2007]文本生成器 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3953 Solved: 1614[Submit][Stat ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【BZOJ-4245】OR-XOR 按位贪心
4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 486 Solved: 266[Submit][Sta ...
- code vs 1098 均分纸牌(贪心)
1098 均分纸牌 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有 N 堆纸牌 ...
- 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心
SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...
随机推荐
- java07循环结构
public class WhileTest { // while循环结构 public static void main(String[] args) { System.out.println(&q ...
- poj 1595
#include <iostream> #define N 10010 using namespace std; int a[N],b[N]; int prime(int a) { int ...
- -webkit-appearance改变任何元素的浏览器默认风格
前段时间,公司有个紧急发布会,需要在移动端做一个邀请函的页面.但是在实现下拉框的时候,IOS和安卓展示的效果总是不一样.经过我一番查找,偶然间发现了-webkit-appearance这个样式属性.后 ...
- discuznt学习笔记
DBWR=DbHelper(client) Discuz.Data部分 DbHelper相当与抽象工厂中的Client,其中定义了需要与数据库进行操作的通用方法(如ExecuteScalar,Fi ...
- Hadoop 实现对Value倒序排序
数据源 A B C D Z 要实现的输出 Z D B C A 看字符顺序,其实什么也没有,只是按照后面的数字进行一次倒序排序,实现思路,1利用hadoop自带的排序功能,2.KV互换 实现代码 pub ...
- 几种常用的Java数据源解决方案
http://blog.163.com/qqabc20082006@126/blog/static/22928525201041944847653/
- JavaScript Arguments 实现可变参数的函数,以及函数的递归调用
//可变参数的函数 注:也可以使用对象作为参数来实现 function Max() { var temp = arguments[0] || 0; for (var i = 1; i < arg ...
- HDU 4614 (13年多校第二场1004)裸线段树
题意:给你N个花瓶,编号是0 到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花. 然后有2个操作. 操作1,a b c ,往在a位置后面(包括a)插b朵花,输出插入的首位置和末位置. 操作 ...
- Linux下动态链接库和静态链接库
第一部分:编译过程 先了解一下linux下C代码的编译过程,C代码的编译,一般分成四个阶段,包括:预编译,编译,汇编和链接,这四个阶段的分工是 预处理过程,负责头文件展开,宏替换,条件编译的选择,删除 ...
- angularJs项目实战!04:angularjs的性能问题
上一篇文章中我花了很多口舌去介绍angularjs是一个中型框架,面对大型应用时少不了第三方类库的配合.而我的核心议题是:如何以angularjs的思路使用其他类库,这里jquery是最好的例子了,谁 ...