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绘制水.云. ...
随机推荐
- 限制EditText最多输入多少汉字
mInputEditText.setFilters(new InputFilter[]{new InputLengthFilter(MAX_INPUT_SIZE)}); public class In ...
- 用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- spring定时任务
需求:在tomcat启动时开启一个定时任务,即项目启动完成后,自动执行某一特定任务. 想法:容器启动时执行方法,最容易想到的就是servlet中可以配置load-on-startup,设置一个正整数也 ...
- vs2010/2013项目的C++所在文件夹越来越大如何解决?
vs2010/2013项目所在文件夹越来越大如何解决? Tools->Options->Text Editor->C/C++->Advanced,在 Fallback Loca ...
- 流量三角形:并非简单的"统计学"
又忙了一周多,今天过来再整理一些东西.国内做产险精算的,准备金的居多,从精算部落中的帖子的跟帖情况可见一斑.既然准备金更容易受到大家的关注,今天再整理一个关于准备金的个人看法,给精算部落收敛一下人气, ...
- 也谈微信小程序
小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不关心是否安装太 ...
- [Core] .NET Core & VS Code 之路(2) Web API
开发Core项目的条件 Visual Studio 2015 Update 3 .NET Core 1.0.0 - VS 2015 Tooling Preview 2 看到VS包的体积,以及不想往下走 ...
- cookie和session简单的用法
一.登录成功则设置cookie和session 二.在登录页判断是否已记住密码 三.在首页判断,和创建会话区 四.在首页执行并显示
- jQuery 菜单
- Slider滑动条
Slider的Value Changed事件一般与Label结合让其显示数值 int mySlider = (int)sender.value; self.sliderLabel.text = [NS ...