思路

如果两个面看到颜色不同,则这个正方体一定要被删掉

然后依次考虑每个面即可

注意坐标的映射

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char see[20][20][20],mat[20][20][20],n;
void get(int pos,int i,int j,int k,int &x,int &y,int &z){
if(pos==1){
x=k;
y=j;
z=i;
}
else if(pos==2){
x=n-j+1;
y=k;
z=i;
}
else if(pos==3){
x=n-k+1;
y=n-j+1;
z=i;
}
else if(pos==4){
x=j;
y=n-k+1;
z=i;
}
else if(pos==5){
x=n-i+1;
y=j;
z=k;
}
else{
x=i;
y=j;
z=n-k+1;
}
}
char get_nxt(void){
char c=getchar();
while(c==' '||c=='\n'||c=='\r'||c=='\0')
c=getchar();
return c;
}
int main(){
while(scanf("%d",&n)==1&&n){
memset(see,0,sizeof(see));
memset(mat,0,sizeof(mat));
for(int i=1;i<=n;i++){
for(int j=1;j<=6;j++)
for(int k=1;k<=n;k++)
see[j][i][k]=get_nxt();
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
mat[i][j][k]='#';
for(int i=1;i<=6;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(see[i][j][k]=='.')
for(int p=1;p<=n;p++){
int x,y,z;
get(i,j,k,p,x,y,z);
mat[x][y][z]='.';
}
while(1){
int isok=true;
for(int i=1;i<=6;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(see[i][j][k]!='.')
for(int p=1;p<=n;p++){
int x,y,z;
get(i,j,k,p,x,y,z);
if(mat[x][y][z]=='.')
continue;
if(mat[x][y][z]=='#'){
mat[x][y][z]=see[i][j][k];
break;
}
if(mat[x][y][z]==see[i][j][k])
break;
mat[x][y][z]='.';
isok=false;
}
if(isok)
break;
}
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(mat[i][j][k]!='.')
ans++;
printf("Maximum weight: %d gram(s)\n",ans);
}
return 0;
}

UVA1030 Image Is Everything的更多相关文章

随机推荐

  1. VUE-006-通过路由 router.push 传递 params 参数(路由 name 识别,请求链接不显示)

    在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...

  2. Luogu4587 [FJOI2016]神秘数

    题目大意:给定一个长度为$n$的正整数序列$a_i$,$m$次询问,每次询问$[l,r]$,求最小的无法表示成$a_l,a_{l+1},\ldots,a_r$的子集之和的正整数. 数据范围:$1\le ...

  3. 17.结构体(typedef)

    1.结构体 a.结构体类型定义b.结构体变量定义c.结构体变量的初始化d.typedef改类型名e.点运算符和指针法操作结构体f.结构体也是一种数据类型,复合类型,自定义类型 2.结构体变量的定义 ( ...

  4. netcore log4相关

    配置: 1:NuGet程序包 - 搜索log4net - 安装 2:配置代码 Startup文件 #region log4        public static ILoggerRepository ...

  5. SpringMVC Web项目升级为Springboot项目(二)

    一.访问原项目地址,报404错误 由于原项目地址启动路径为http://localhost:8080/xxx Spring boot默认启动路径为http://localhost:8080/ 所以需要 ...

  6. [svc]tcp三次握手四次挥手&tcp的11种状态(半连接)&tcp的time-wait

    TCP的状态转化过程(11种状态)以及TIME_WAIT状态 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT 我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就 ...

  7. 3.3.1 MyBatis框架介绍

    MyBatis框架介绍 1. 什么是框架 (1) 框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程. (2) 框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用 ...

  8. windows下复制文件报错“文件名对目标文件夹可能过长 。您可以缩短文件名并重试,或者......”

    我将一个路径下文件夹复制到另一个路径下时,出现了报错,报错图片如下: 然后查资料发现: 1.文件名长度最大为255个英文字符,其中包括文件扩展名在内.一个汉字相当于两个英文字符.2.文件的全路径名长度 ...

  9. 尝试启动 ADB 服务器时出错 解决方法

    启动CMD→ adb kill-server → adb start-server;

  10. 安装linux虚拟机

    虚拟机安装流程 1. 安装系统 安装完成 2. 安装VMware tools linux(ubuntu 18.04 Desktop) 手动安装 1) 加载光驱 2) 双击进入光驱,在光驱的目录下,打开 ...