https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1402

http://7xjob4.com1.z0.glb.clouddn.com/53f6b2526cc5a59ec7881a8fd6d899bd

题意:将n个原有颜色的立方体涂尽量少次使立方体都相同;

思路:枚举除第一个面外每个立方体的姿态(24种),姿态由旋转方式先处理得到,再枚举每一个对应面记录要涂的数量。

处理代码:

 #include <bits/stdc++.h>
using namespace std; int lleft[]={,,,,,,};
int up[]={,,,,,,}; void rot(int *T,int *p)
{
int q[];
for(int i=;i<=;i++)
{
q[i]=p[i];
} for(int i=;i<=;i++)
{
p[i]=q[T[i]];
}
} int main()
{
int p0[]={,,,,,,}; printf("int dice[25][7]= {\n{0},\n");
for(int i=;i<=;i++)
{
int p[];
for(int j=;j<=;j++)
p[j]=p0[j]; if(i==) rot(up,p);
if(i==) { rot(lleft,p); rot(up,p); } if(i==) { rot(up,p);rot(up,p); }
if(i==) { rot(lleft,p);rot(lleft,p);rot(lleft,p);rot(up,p); }
if(i==) { rot(lleft,p);rot(lleft,p);rot(up,p); } for(int j=;j<=;j++)
{
printf("{%d,%d,%d,%d,%d,%d,%d},",p[],p[],p[],p[],p[],p[],p[]);
rot(lleft,p);
}
printf("\n");
}
printf("}; \n");
}

计算代码:

 #include <bits/stdc++.h>
#include <iostream>
using namespace std; int dice[][]= {
{},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},
}; int n,ans;
int color[][],state[];
vector <string> colorname; int colorid(char str[])
{
int i,j;
string s(str);
int m=colorname.size();
for(i=;i<m;i++)
{
if(colorname[i]==s)
{
return i;
}
}
colorname.push_back(s);
return m;
} void cal()
{
int i,j;
int num=,maxnum;
map <int,int> cn;
for(j=;j<=;j++)
{
cn.clear();
maxnum=;
for(i=;i<=n;i++)
{
int cnam=color[i][dice[state[i]][j]];
cn[cnam]++;
if(cn[cnam]>maxnum)
maxnum=cn[cnam];
}
num+=(n-maxnum);
}
if(ans>num)
ans=num;
} void dfs(int m)
{
int i,j;
if(m==n)
{
cal();
return;
}
for(i=;i<=;i++)
{
state[m+]=i;
dfs(m+);
}
}
int main()
{
char str[];
int i,j;
while(scanf("%d",&n)!=EOF && n!=)
{
colorname.clear();
for(i=;i<=n;i++)
{
for(j=;j<=;j++)
{
scanf("%s",str);
color[i][j]=colorid(str);
}
} if(n==)
{
ans=;
}
else
{
ans=;
state[]=;
dfs();
} printf("%d\n",ans);
}
return ;
} /*
for(i=1;i<=n;i++)
{
for(j=1;j<=6;j++)
{
printf("%s ",color[i][j]);
}
printf("\n");
}
if(strcmp(color[1][2],color[2][3])==0)
{
printf("yes\n");
}
*/

UVALive 3401 彩色立方体的更多相关文章

  1. Direct3D11学习:(七)绘图基础——彩色立方体的绘制

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在前面的几篇文章中,我们详细介绍了Direct3D渲染所需要的数学基础和渲染管道理论知识.从这篇文章开始,我们就 ...

  2. 【Qt for Android】OpenGL ES 绘制彩色立方体

    Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...

  3. Directx11学习笔记【十二】 画一个旋转的彩色立方体

    上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...

  4. UVaLive 3401 Colored Cubes (暴力)

    题意:给定n个立方体,让你重新涂尽量少的面,使得所有立方体都相同. 析:暴力求出每一种姿态,然后枚举每一种立方体的姿态,求出最少值. 代码如下: #pragma comment(linker, &qu ...

  5. UVALive - 3401 Colored Cubes

    好久没写解题回顾了.主要是没什么时间,但是还是一直在刷题,图论刷了70%的知识点,不过感觉长进不是很大,所以觉得还是得一步步来,最近还是先从刘汝佳大白书把前面基础章节刷完然后再决定以后的训练方式吧. ...

  6. UVALive 3401 - Colored Cubes 旋转 难度: 1

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

  7. LA 3401

    彩色立方体. [分析] 弄清楚24种状态,可以由标准姿态旋转而来. 计算24种状态: #include <iostream> #include <string> ,,,,, } ...

  8. Direct3D11学习:(九)绘制基本几何体

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct3D中很多复杂的几何效果都是由基本的几何体组合而成的,这篇文章中,我们来学习集中常见的基本几何体的绘 ...

  9. Direct3D11学习:(八)Effects介绍

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Effects框架是一组用于管理着色器程序和渲染状态的工具代码.例如,你可能会使用不同的effect绘制水.云. ...

随机推荐

  1. 使用SSIS汇集监控数据

    1.背景 数据库服务器部署有各类巡检脚本,现在想把巡检收集到的数据汇集到一起.Source源对应的是各业务数据库服务器,Destination目标对应的是保存汇集数据的服务器.前期部署的时候已将巡检相 ...

  2. MVC中的成员资格,授权,安全性

    使用 Authorize 特性登录 Authorize 是 ASP.NET MVC 自带的默认授权过滤器, 可用来限制用户对操作方法的访问. 保护控制器操作 Authorize 特性在表单身份验证和 ...

  3. echarts基础 handleIcon 设置

    1.自己引入echarts库 2.找到代码中dataZoom中的handleIcon ,看见对应的是"M0,0 v9.7h5 v-9.7h-5 Z",这是由svg画出来的图形,其中 ...

  4. 通过数据库查看EBS的登录地址

    1. SQL> SELECT home_url FROM icx_parameters; HOME_URL ------------------------------------------- ...

  5. 批判性思维——Asking The Right Questions

    我们生活在一个纷繁复杂的数字世界中,每天都在信息海洋中遨游.如果不想被其淹没,继而成为别人思想的傀儡,就有必要对你接受的信息进行批判.筛选,自己决定该相信什么不该相信什么,进而形成自己的观点,而不是一 ...

  6. Abundant Resources

    https://github.com/vhf/free-programming-books/blob/master/free-programming-books-zh.md

  7. python爬虫

    预:网页的组成 HTML(结构)+css(样式)+javascript(功能) 爬虫主要针对的是HTML和css HTML: <div></div>div标签 代表网页中某个区 ...

  8. 「JavaScript」四种跨域方式详解

    超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...

  9. 将abc的全排列输出

    #include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...

  10. 图片轮播器bcastr4.swf“&”符号的问题

    bcastr4.swf是一个很不错的网页图片轮播器,我一直使用它作为网站首页图片轮播的控件. http://xiaogui.org/bcastr-open-source-flash-image-sil ...