将每一个分解为六个两面的 简单地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的更多相关文章

  1. uva 10051 Tower of Cubes(DAG最长路)

    题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...

  2. 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 ...

  3. UVa Problem 10051

    这题有点类似LIS,由于颜色最多100种,所以只需建立一个100的数组,按对立面的关系以某种颜色为向上面的最大值就可以了.   #include <iostream> #include & ...

  4. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  5. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  6. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  7. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  8. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  9. 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 ...

随机推荐

  1. HDOJ2012素数判定

    素数判定 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. C# winform滚动字幕

    private void timer1_Tick(object sender, EventArgs e)//用Timer来控制滚动速度 { label1.Left -= 2;//设置label1左边缘 ...

  3. (二)Qt界面设计之菜单栏

    1.添加菜单项 直接输入菜单项名称,然后回车即可. 2.为菜单项设置图标 在动作编辑器上,右键选择编辑,然后添加图标 如果想在图标栏添加该菜单的快捷图标,直接将该动作项拖放只图标栏即可. 3.事件响应 ...

  4. minicsv库的编译错误与解决方案

    有一个项目需要写csv文件以呈现数据.Github上有一个关于csv的轻量级读写库minicsv,于是下载之.但是编译example时出现了以下问题: In file included from ex ...

  5. 暑假集训(4)第四弹 -----排列,计数(hdu1465)

    题意概括:嗯,纵使你数次帮助小A脱离困境,但上一次,小A终于还是失败了.那数年的奔波与心血,抵不过轻轻一指,便彻底 湮灭,多年的友谊终归走向末路.这一切重击把小A彻底击溃! 不为什么,你到底还是要继续 ...

  6. 使用JavaScript实现简单的输入校验

    HTML页面代码: <!doctype html> <html lang="en"> <head> <meta charset=" ...

  7. xamarin android——数据绑定到控件(二)

    本示例为通过媒体内容提供器获取本机中的图片显示在Gallery中. 活动中简单的初始化代码 private void InitGallery() { Gallery gallery = FindVie ...

  8. Kubernetes Architecture

    reference:https://www.symantec.com/connect/blogs/google-kubernetes-analytical-evaluation

  9. Js popup position which right under target item

    <div style="margin-left:600px;"> <div id="Span1" style="color:#eee ...

  10. jquery横向滚动条

    此代码献给wendy 由于工作太忙,下次再整理成插件调用,先记录下来,欢迎同学们提意见. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...