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种),姿态由旋转方式先处理得到,再枚举每一个对应面记录要涂的数量。

处理代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 int lleft[7]={0,2,6,3,4,1,5};
 5 int up[7]={0,4,2,1,6,5,3};
 6
 7 void rot(int *T,int *p)
 8 {
 9     int q[7];
10     for(int i=1;i<=6;i++)
11     {
12         q[i]=p[i];
13     }
14
15     for(int i=1;i<=6;i++)
16     {
17         p[i]=q[T[i]];
18     }
19 }
20
21 int main()
22 {
23     int p0[7]={0,1,2,3,4,5,6};
24
25     printf("int dice[25][7]= {\n{0},\n");
26     for(int i=1;i<=6;i++)
27     {
28         int p[7];
29         for(int j=0;j<=6;j++)
30             p[j]=p0[j];
31
32         if(i==1) rot(up,p);
33         if(i==2) {  rot(lleft,p); rot(up,p); }
34
35         if(i==4) {  rot(up,p);rot(up,p); }
36         if(i==5) {  rot(lleft,p);rot(lleft,p);rot(lleft,p);rot(up,p); }
37         if(i==6) {  rot(lleft,p);rot(lleft,p);rot(up,p); }
38
39         for(int j=1;j<=4;j++)
40         {
41             printf("{%d,%d,%d,%d,%d,%d,%d},",p[0],p[1],p[2],p[3],p[4],p[5],p[6]);
42             rot(lleft,p);
43         }
44         printf("\n");
45     }
46     printf("}; \n");
47 }

View Code

计算代码:

  1 #include <bits/stdc++.h>
  2 #include <iostream>
  3 using namespace std;
  4
  5 int dice[25][7]= {
  6 {0},
  7 {0,4,2,1,6,5,3},{0,2,3,1,6,4,5},{0,3,5,1,6,2,4},{0,5,4,1,6,3,2},
  8 {0,4,6,2,5,1,3},{0,6,3,2,5,4,1},{0,3,1,2,5,6,4},{0,1,4,2,5,3,6},
  9 {0,1,2,3,4,5,6},{0,2,6,3,4,1,5},{0,6,5,3,4,2,1},{0,5,1,3,4,6,2},
 10 {0,6,2,4,3,5,1},{0,2,1,4,3,6,5},{0,1,5,4,3,2,6},{0,5,6,4,3,1,2},
 11 {0,4,1,5,2,6,3},{0,1,3,5,2,4,6},{0,3,6,5,2,1,4},{0,6,4,5,2,3,1},
 12 {0,4,5,6,1,2,3},{0,5,3,6,1,4,2},{0,3,2,6,1,5,4},{0,2,4,6,1,3,5},
 13 };
 14
 15 int n,ans;
 16 int color[5][7],state[5];
 17 vector <string> colorname;
 18
 19 int colorid(char str[])
 20 {
 21     int i,j;
 22     string s(str);
 23     int m=colorname.size();
 24     for(i=0;i<m;i++)
 25     {
 26         if(colorname[i]==s)
 27         {
 28             return i;
 29         }
 30     }
 31     colorname.push_back(s);
 32     return m;
 33 }
 34
 35 void cal()
 36 {
 37     int i,j;
 38     int num=0,maxnum;
 39     map <int,int> cn;
 40     for(j=1;j<=6;j++)
 41     {
 42         cn.clear();
 43         maxnum=0;
 44         for(i=1;i<=n;i++)
 45         {
 46             int cnam=color[i][dice[state[i]][j]];
 47             cn[cnam]++;
 48             if(cn[cnam]>maxnum)
 49                 maxnum=cn[cnam];
 50         }
 51         num+=(n-maxnum);
 52     }
 53     if(ans>num)
 54         ans=num;
 55 }
 56
 57 void dfs(int m)
 58 {
 59     int i,j;
 60     if(m==n)
 61     {
 62         cal();
 63         return;
 64     }
 65     for(i=1;i<=24;i++)
 66     {
 67         state[m+1]=i;
 68         dfs(m+1);
 69     }
 70 }
 71 int main()
 72 {
 73     char str[30];
 74     int i,j;
 75     while(scanf("%d",&n)!=EOF && n!=0)
 76     {
 77         colorname.clear();
 78         for(i=1;i<=n;i++)
 79         {
 80             for(j=1;j<=6;j++)
 81             {
 82                 scanf("%s",str);
 83                 color[i][j]=colorid(str);
 84             }
 85         }
 86
 87         if(n==1)
 88         {
 89             ans=0;
 90         }
 91         else
 92         {
 93             ans=24;
 94             state[1]=9;
 95             dfs(1);
 96         }
 97
 98         printf("%d\n",ans);
 99     }
100     return 0;
101 }
102
103 /*
104 for(i=1;i<=n;i++)
105         {
106             for(j=1;j<=6;j++)
107             {
108                 printf("%s ",color[i][j]);
109             }
110             printf("\n");
111         }
112         if(strcmp(color[1][2],color[2][3])==0)
113         {
114             printf("yes\n");
115         }
116 */

View Code

转载于:https://www.cnblogs.com/cyd308/p/5644783.html

UVALive 3401 彩色立方体相关推荐

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

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

  2. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体

    本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...

  3. 现代OpenGL教程(三):绘制彩色立方体(imgui+OpenGL3.3)

    前言:imgui 是一个开源的GUI框架,自带的例子里面直接集成了glfw+gl3w环境,本例使用的版本是imgui v1.61,下载地址:https://github.com/ocornut/img ...

  4. HTML+CSS炫酷彩色立方体特效

    源码视频教程 HTML+CSS炫酷彩色立方体 HTML代码 <!DOCTYPE html> <html lang="en"><head>< ...

  5. D3D11无双(2):渲染一个3D彩色立方体

    渲染一个彩色立方体,这是个很经典的案例,上一篇文章成功地渲染了一个三角形,这次是个3D对象. (注:blog: http://blog.csdn.net/booirror) 3D空间 对象空间:对象空 ...

  6. OpenGL 入门基础教程 —— 彩色立方体

    参考资料:http://www.opengl-tutorial.org/cn/beginners-tutorials/tutorial-4-a-colored-cube/ 知识点1:顶点属性缓冲.色彩 ...

  7. 用webgl绘制一个彩色旋转立方体

    #用webgl绘制一个旋转立方体 ** 学习交流欢迎加群:789723098,博主会将一些demo整理共享 ** 今天给大家分享一个用webgl写的简单的三维场景:转动的交互式彩色立方体,其六个面的颜 ...

  8. 数字图像处理:第十八章 彩色图象处理

    第十八章 彩色图象处理 目录 1.    引言 2.    彩色空间 3.    不同彩色空间之间的转换 4.    彩色图象的分割 作业 1.  引言 彩色图象是多光谱图象的一种特殊情况,对应于人类 ...

  9. (四)使用OpenCV实现图像彩色模型转换

    (四)使用OpenCV实现图像彩色模型转换 全文介绍部分引自<数字图像处理>第六章 1.彩色基础 彩色光在电磁波中的波长范围是400-700nm.人眼中的锥状体负责色觉的感知,实验发现,人 ...

最新文章

  1. 下一版本Windowsreg; CE 开发工具Smart Device Extensions for Microsoft Visual Studioreg; .NET...
  2. python任意输入一个正整数、判断该数是否为素数_Python编程判断一个正整数是否为素数的方法,python素数...
  3. 即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)
  4. JavaScript定时器的工作原理(翻译)
  5. 怎么修剪_夹竹桃怎么养?这样“修剪”一下,一年开3、4次花,花大色艳
  6. java等待_Java学习:等待唤醒机制
  7. python csdn博客_GitHub - 1783955902/CSDNBlogBackup: Python实现CSDN博客的完整备份
  8. [BZOJ2655] calc
  9. 大数据揭示90后爱情观,“有钱”只能排最后
  10. Java快速开发框架LML简介
  11. tomcat有集成mysql嘛_jira+tomcat+mysql的集成
  12. (100)FPGA单沿和双沿采样(下降沿采样)
  13. 对象存储 OSS > 开发指南 > 存储类型 > 存储类型介绍
  14. LINUX yum用法
  15. java this 方法,使用“this”用方法(用Java)
  16. python服务器搭建qt搭建客户端_利用PythonQT,定制服务器启动工具
  17. HTML转义字符参照表
  18. PyQt、PySide、PySide2这三者到底有什么区别?
  19. 异名童鞋的微信小游戏性能优化
  20. java代码实现注册发送邮件激活账户

热门文章

  1. 简记docker用法
  2. Django外键关系:一对一、一对多,多对多
  3. 产品经理基本功:消息推送设计
  4. Python资料收藏(杂乱版)
  5. 我是直接学Swift还是Objective-C?
  6. 对linux下loop设备的理解。
  7. 【软件解决】 解决 TortoiseSVN 图标不显示问题
  8. SubSonic 零代码的数据访问
  9. 问题三十六:ray tracing中的Inverse Mapping(3)——圆盘Inverse Mapping
  10. mysql4语法_4 MySQL 语法技巧