UVa 103 - Stacking Boxes (LIS,打印路径)
题意:给n维图形,它们的边长是{d1,d2,d3...dn}, 对于两个n维图形,求满足当中一个的全部边长
依照随意顺序都一一相应小于还有一个的边长,这种最长序列的个数,而且打印随意一个最长子串的路径,
比如:a(9,5,7,3),b(6,10,8,2),c(9,7,5,1),a和b不满足,但c和b满足
分析:首先对没组边长从小到大排序,再对各组图形按最小边排序,再求最大子串,
对于打印路径,能够逆序循环,也可递归求解
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[35],path[35],num,m,k;
struct stu
{
int a[12],id;
}s[35];
int cmp(struct stu s1,struct stu s2)
{
return s1.a[1]<s2.a[1];
}
/*void back_path1(int i)
{
if(path[i]!=i)
back_path1(path[i]);
printf("%d",s[i].id);
num++;
if(num!=m)
printf(" ");
else
printf("\n");
}*/
/*void back_path2(int i)
{
if(k--){
back_path2(path[i]);
printf("%d",s[i].id);
num++;
if(num!=m)
printf(" ");
else
printf("\n");
}
}*/
int main()
{
int i,j,n,pos,b[1005];
while(scanf("%d%d",&m,&n)!=EOF){
for(i=1;i<=m;i++){
s[i].id=i;
for(j=1;j<=n;j++)
scanf("%d",&s[i].a[j]);
sort(s[i].a+1,s[i].a+n+1); //对每一个图形的边长排序
}
sort(s+1,s+m+1,cmp); //对各个图形之间,按最小边长的大小排序
for(i=1;i<=m;i++){
dp[i]=1;
path[i]=i;
for(j=1;j<i;j++){
for(k=1;k<=n;k++)
if(s[j].a[k]>=s[i].a[k])
break;
if(k==n+1&&dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
path[i]=j;
}
}
}
pos=1;
for(i=2;i<=m;i++)
if(dp[i]>dp[pos])
pos=i;
m=dp[pos];
printf("%d\n",m);
b[1]=s[pos].id; //先把最后一个编号增加
i=2;
for(j=pos-1;j>=1;j--){ //逆序循环求路径
for(k=1;k<=n;k++)
if(s[j].a[k]>=s[pos].a[k])
break;
if(k==n+1&&dp[j]+1==dp[pos]){
b[i++]=s[j].id;
dp[pos]--;
}
if(dp[pos]==1)
break;
}
for(j=i-1;j>1;j--)
printf("%d ",b[j]);
printf("%d\n",b[1]);
/*num=0; //递归方法1
back_path1(pos);*/
/*num=0; //递归方法2
k=m;
back_path2(pos);*/
}
return 0;
}
UVa 103 - Stacking Boxes (LIS,打印路径)的更多相关文章
- UVA 103 Stacking Boxes --LIS
实际上是一个扩展维度的矩形嵌套问题. 一个物体能嵌入另一个物体中,当且仅当这个物体的所有维度的长度都小于另外一个(本题是小于等于),又因为可以旋转等变换,所以干脆将每个箱子的边从小到大排序,以便于判断 ...
- UVa 103 Stacking Boxes --- DAG上的动态规划
UVa 103 题目大意:给定n个箱子,每个箱子有m个维度, 一个箱子可以嵌套在另一个箱子中当且仅当该箱子的所有的维度大小全部小于另一个箱子的相应维度, (注意箱子可以旋转,即箱子维度可以互换),求最 ...
- uva 103 Stacking Boxes(DAG)
题目连接:103 - Stacking Boxes 题目大意:有n个w维立体, 输出立体互相嵌套的层数的最大值, 并输出嵌套方式, 可嵌套的要求是外层立体的w条边可以分别对应大于内层立体. 解题思路: ...
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
Stacking Boxes Background Some concepts in Mathematics and Computer Science are simple in one or t ...
- UVa 103 - Stacking Boxes(dp求解)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- UVa 103 - Stacking Boxes
题目大意:矩阵嵌套,不过维数是多维的.有两个个k维的盒子A(a1, a1...ak), B(b1, b2...bk),若能找到(a1...ak)的一个排列使得ai < bi,则盒子A可嵌套在盒子 ...
- uva 103 Stacking Boxes(最长上升子序列)
Description Stacking Boxes Background Some concepts in Mathematics and Computer Science are simp ...
- UVA 103 Stacking Boxes n维最长上升子序列
题目链接:UVA - 103 题意:现有k个箱子,每个箱子可以用n维向量表示.如果一个箱子的n维向量均比另一个箱子的n维向量大,那么它们可以套接在一起,每个箱子的n维向量可以互相交换值,如箱子(2,6 ...
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
题意:给出几个多维的箱子,如果箱子的每一边都小于另一个箱子的对应边,那就称这个箱子小于另一个箱子,然后要求能够套出的最多的箱子. 要注意的是关系图的构建,对箱子的边排序,如果分别都小于另一个箱子就说明 ...
随机推荐
- 【安卓】eclipse中不可错过的几个秘密、!
1.PackageExplorer显示文件层次的默认方式是平行列出全部包,事实上也可显示成多级,并且效果比navigator好多了. PackageExplorer视图中,"右上角箭头→pa ...
- bestcoder.hdu.edu.cn
http://bestcoder.hdu.edu.cn/ Problem A 题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproble ...
- find查找大于1M小于10M的文件 $ find . -size +1M -size -10M
查找大于1M小于10M的文件$ find . -size +1M -size -10M
- hdu 4706 Children's Day 2013年ICPC热身赛A题 模拟
题意:按字母顺序排列成n型,简单的模拟题. 当字母排到z时从a开始重新排起. 代码: /* * Author: illuz <iilluzen[at]gmail.com> * Blog: ...
- 改动已有gpg密钥的用户标识及凝视
/********************************************************************* * Author : Samson * Date ...
- 对TMemoryStream的一些改进(用到了LockFile)
对TMemoryStream的一些改进 怎么又是关于Stream的,呵呵,应该说只是最近比较关心程序的效率问题,而我对Stream其实并没有什么特别的研究,只是自己发现了一些新的用法,希望能对大家有用 ...
- ThinkPhp学习03
原文:ThinkPhp学习03 一.ThinkPHP 3 的输出 (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用as ...
- 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器
原文:与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 [索引页][源码下载] 与众不同 windows phon ...
- timeout connect 10000 # default 10 second time out if a backend is not found
timeout connect <timeout> timeout contimeout <timeout> (deprecated) Set the maximum time ...
- CentOS下yum使用代理的设置
export后好像没用? 问题描述: CentOS yum时出现“Could not retrieve mirrorlist http://mirrorlist.centos.org/?release ...