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. [SharePoint 2013] Create event receiver for external list

    Main list for creating event receiver for external list Subscribe   storage, it could be data table ...

  2. 添加APNS通知

    1.进入苹果开发者官网developer.apple.com,点击member center,进入登录界面. 2.输入你的开发者账号和密码,登录后会跳转到“Select your team”这个界面. ...

  3. xtrabackup备份rds记录

    在执行最后一步时 mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mys ...

  4. U家面试prepare: Serialize and Deserialize Tree With Uncertain Children Nodes

    Like Leetcode 297, Serialize and Deserialize Binary Tree, the only difference, this is not a binary ...

  5. 界面使用webview,并且webview里面有图片进行自动切换导致界面上滚动条卡顿。

    最近的项目是用webview做的界面,但是在界面顶端加了android本地动画效果的横向滚动条.当webview里面的图片切换时导致滚动条动画卡顿. 1:setLayerType(View.LAYER ...

  6. 配置java环境 ,安装Android Studio...(ps:用eclipse也不错,但as是趋势 自己凭爱好选择)

    to:青科大可爱的学弟学妹: 配置java环境 step1:下jdk 直接打开链接即可(ps:复制链接到迅雷下载更快哦) 64位的:http://download.oracle.com/otn-pub ...

  7. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成

    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...

  8. LigerUI 表单和表格中的combobox如何初始化值

    摘要: 在修改基础信息的时候,通常会遇到需要修改值为选择值的时候,这时候,数据库存的一般是value,而不是显示的text值,但页面显示的时候如果显示成数字型的值,通常会给人不够直观的感觉.因此,要求 ...

  9. iOS简单动画

    知识架构 CALayer 图层类 CABasicAnimation 基础动画 CAKeyFrameAnimation 帧动画 CATransition 转场动画 CAAnimationGroup 动画 ...

  10. java第三次作业

    import java.util.Scanner; public class Practice { public static void main(String[] args) { int nextV ...