uva 10051
将每一个分解为六个两面的 简单地dp 回溯输出路径.....
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
struct cc
{
int top,bom,fa,w;
void f(int a, int b, int c, int d)
{
top = a;
bom = b;
fa = c;
w = d;
}
};
cc cube[3100];
char face[7][10] = { "front","back", "left", "right", "top", "bottom"};
int dp[3100],cu[7],p[3100];
void printpath(int k)
{
if(k == -1)
return ;
printpath(p[k]);
printf("%d %s\n",cube[k].w, face[cube[k].fa]);
}
int main()
{
int n, ca = 1;
while(scanf("%d", &n) == 1 && n)
{
int m = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < 6; j++)
scanf("%d",&cu[j]);
for(int j = 0; j < 6; j++)
{
cube[m++].f(cu[j], j%2 == 1?cu[j-1]:cu[j+1], j, i+1);
}
}
memset(dp, 0, sizeof( dp));
memset(p, -1, sizeof( p));
int _max = 0, k;
for(int i = 0; i < m; i++)
for(int j = i+1; j < m; j++)
if(cube[j].w > cube[i].w && cube[i].bom == cube[j].top && dp[j] < dp[i]+1)
{
dp[j] = dp[i]+1;
p[j] = i;
if(dp[j] > _max)
{
_max = dp[j];
k = j;
}
}
printf("Case #%d\n%d\n",ca++,_max+1);
printpath(k);
puts("");
}
return 0;
}
uva 10051的更多相关文章
- uva 10051 Tower of Cubes(DAG最长路)
题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...
- Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 5. Dynamic Programming
10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=sho ...
- UVa Problem 10051
这题有点类似LIS,由于颜色最多100种,所以只需建立一个100的数组,按对立面的关系以某种颜色为向上面的最大值就可以了. #include <iostream> #include & ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
随机推荐
- UML——动态建模
- 转摘 Eclipse智能提示及快捷键
1.java智能提示 (1). 打开Eclipse,选择打开" Window - Preferences". (2). 在目录树上选择"Java-Editor-Conte ...
- ifndef/define/endif作用和用法
问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! ------------- ...
- centos6.5下磁盘分区及挂载
1..查看磁盘空间 2.磁盘分区 3.格式化分区 4.挂载/卸载
- Objective-C访问SQLite
数据库的相关知识我就不去说明了,毕竟只要会sql语言的人就大家都一样. 本案例是在Xcode7.2环境下创建的single view application进行演示操作. 首先第一点,为什么要使用sq ...
- Xcode7主题路径
// Xcode7主题路径~/Library/Developer/Xcode/UserData/FontAndColorThemes
- PHP自定义日期英文格式 Feb 11,2015
背景:[PHP小工具]项目中,经常会要求多版本语言支持,而日期也是必不可少的组成元素. 英文日期书写顺序分英式和美式,举例如. 美国:月日年(January 8th,2014 或 January 8, ...
- (转)19个必须知道的Visual Studio快捷键
本文将为大家列出在 Visual Studio 中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率. 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Al ...
- JavaScript的语法规则
JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾 ...
- Git初始化与上传
一: 现在git上Create个repository 二:进入要长传的工程目录打开git bash git initgit statusgit add .//add .的时候文件不要被占用. git ...