UVALive 3401 彩色立方体
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 彩色立方体的更多相关文章
- Direct3D11学习:(七)绘图基础——彩色立方体的绘制
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在前面的几篇文章中,我们详细介绍了Direct3D渲染所需要的数学基础和渲染管道理论知识.从这篇文章开始,我们就 ...
- 【Qt for Android】OpenGL ES 绘制彩色立方体
Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...
- Directx11学习笔记【十二】 画一个旋转的彩色立方体
上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...
- UVaLive 3401 Colored Cubes (暴力)
题意:给定n个立方体,让你重新涂尽量少的面,使得所有立方体都相同. 析:暴力求出每一种姿态,然后枚举每一种立方体的姿态,求出最少值. 代码如下: #pragma comment(linker, &qu ...
- UVALive - 3401 Colored Cubes
好久没写解题回顾了.主要是没什么时间,但是还是一直在刷题,图论刷了70%的知识点,不过感觉长进不是很大,所以觉得还是得一步步来,最近还是先从刘汝佳大白书把前面基础章节刷完然后再决定以后的训练方式吧. ...
- UVALive 3401 - Colored Cubes 旋转 难度: 1
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- LA 3401
彩色立方体. [分析] 弄清楚24种状态,可以由标准姿态旋转而来. 计算24种状态: #include <iostream> #include <string> ,,,,, } ...
- Direct3D11学习:(九)绘制基本几何体
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct3D中很多复杂的几何效果都是由基本的几何体组合而成的,这篇文章中,我们来学习集中常见的基本几何体的绘 ...
- Direct3D11学习:(八)Effects介绍
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Effects框架是一组用于管理着色器程序和渲染状态的工具代码.例如,你可能会使用不同的effect绘制水.云. ...
随机推荐
- CentOS 7 yum方式配置LAMP环境
环境:CentOS 7 最小化安装 采用Putty连接 方法:采用YUM安装方法 目的:搭建Apache+Mysql+PHP环境 1,安装Apache yum install httpd //默认情况 ...
- Babel下的ES6兼容性与规范
前端开发 Babel下的ES6兼容性与规范 ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问 ...
- 怎样设置才能允许外网访问MySQL
1.将本地数据库的user表的第一条记录的host数据改为%,或者用update user set host='%' where user='root'; 2.用MySQL的命令行客户端操作如下步骤: ...
- Find cmd
Find cmd with python programing python at page320 Unix find cmd: find . -name "*.py " -pri ...
- Http TCP/IP 协议的关系
转自:http://www.cnblogs.com/ymy124/archive/2012/03/18/2404958.html 项目要求Web服务是高安全级别,在选择.net remoting,we ...
- 把某一字段更新为连续值的SQL
--从10001起,借用生成的行号,批量编号表记录 ; update t1 set t1.newNo=t2.newNo from student t1 join (select id, (row_nu ...
- 学习了quartz.net2.0的心得
由于项目中要运用到此调度方法,所以抽空学习了下,简单的用法可以掌握了 首先作为没有用过的人来说,怎么用呢? 于是百度了下原来先要下载 quartz.net2.0, 然后我就去下了个quartz.net ...
- IIS Express 配置外部访问
IIS Express是Visual Stuido自带的微型Web服务器,简单易用. IIS Express默认只允许本机访问,通过Visual Studio调试Web程序时,我们有时需要通过外部访问 ...
- 时间轴感----Allen Pike
动画要跑在60fps下.这意味着每一帧需要花费16ms来跑完(1000ms/60=16).这是要达到原生应用般平滑体验的最基本要求.60 fps是所有的iOS的内置动画运行的速度;这就是为什么滚动在i ...
- CSS3 笔记三(Shadow/Text/Web Fonts)
CSS3 Shadow Effects text-shadow box-shadow 1> text-shadow The text-shadow property adds shadow to ...