1. /*
  2. 这题说的的是 N 维的坐标, 每个盒子的N维坐标 可以进行 随意方式的调换
  3. 然后求出 A全部的坐标小于B的 则 A 可以嵌套在B中 然后 计算出最多的 盒子嵌套个数
  4. 简单的状态转移 我为何如此的弱
  5. */
  6. #include <iostream>
  7. #include <cstdio>
  8. #include <string.h>
  9. #include <algorithm>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. using namespace std;
  14. const int maxn=35;
  15. const int maxm=15;
  16. int N[maxn][maxm];
  17. int dp[maxn];
  18. int lis,mlis,n,m,per[maxn];
  19. bool mark[maxn][maxn];
  20. stack<int>TT;
  21. bool jud(int a,int b){
  22. int f=0;
  23. for(int i=0;i<m;i++)
  24. if(N[a][i]<=N[b][i])
  25. { f=1; break; }
  26. if(f) return false;
  27. return true;
  28. }
  29. int main()
  30. {
  31.  
  32. while(scanf("%d%d",&n,&m)==2){
  33. per[0]=lis=0;
  34. dp[0]=1;
  35. for(int i=1;i<=n;i++) {
  36. dp[i]=1; per[i]=0;
  37. }
  38. for(int i=1;i<=n;i++){
  39. for(int j=0;j<m;j++)
  40. scanf("%d",&N[i][j]);
  41. sort(N[i],N[i]+m);
  42. }
  43. for(int i=1;i<=n;i++)
  44. for(int j=1;j<=n;j++)
  45. mark[i][j]=jud(i,j);
  46. for(int k=0;k<n;k++)
  47. for(int i=1;i<=n;i++){
  48. for(int j=1;j<=n;j++)
  49. if(i!=j&&mark[i][j]&&dp[i]<dp[j]+1){
  50. dp[i]=dp[j]+1;
  51. per[i]=j;
  52. }
  53. if(dp[i]>lis){
  54. lis=dp[i];
  55. mlis=i;
  56. }
  57. }
  58. printf("%d\n",lis);
  59. TT.push(mlis);
  60. int jj;
  61. while(1){ jj=per[mlis];if(jj==0) break;TT.push(jj);mlis=jj; }
  62. jj=TT.top();TT.pop();
  63. printf("%d",jj);
  64. while(!TT.empty()){ jj=TT.top();TT.pop();printf(" %d",jj); }
  65. printf("\n");
  66. }
  67. return 0;
  68. }

UVA 103的更多相关文章

  1. UVa 103 Stacking Boxes --- DAG上的动态规划

    UVa 103 题目大意:给定n个箱子,每个箱子有m个维度, 一个箱子可以嵌套在另一个箱子中当且仅当该箱子的所有的维度大小全部小于另一个箱子的相应维度, (注意箱子可以旋转,即箱子维度可以互换),求最 ...

  2. UVa 103 - Stacking Boxes (LIS,打印路径)

    链接:UVa 103 题意:给n维图形,它们的边长是{d1,d2,d3...dn},  对于两个n维图形,求满足当中一个的全部边长 依照随意顺序都一一相应小于还有一个的边长,这种最长序列的个数,而且打 ...

  3. UVA 103 Stacking Boxes n维最长上升子序列

    题目链接:UVA - 103 题意:现有k个箱子,每个箱子可以用n维向量表示.如果一个箱子的n维向量均比另一个箱子的n维向量大,那么它们可以套接在一起,每个箱子的n维向量可以互相交换值,如箱子(2,6 ...

  4. UVa 103 - Stacking Boxes(dp求解)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  5. uva 103 Stacking Boxes(DAG)

    题目连接:103 - Stacking Boxes 题目大意:有n个w维立体, 输出立体互相嵌套的层数的最大值, 并输出嵌套方式, 可嵌套的要求是外层立体的w条边可以分别对应大于内层立体. 解题思路: ...

  6. UVA 103 Stacking Boxes --LIS

    实际上是一个扩展维度的矩形嵌套问题. 一个物体能嵌入另一个物体中,当且仅当这个物体的所有维度的长度都小于另外一个(本题是小于等于),又因为可以旋转等变换,所以干脆将每个箱子的边从小到大排序,以便于判断 ...

  7. UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索

    题意:给出几个多维的箱子,如果箱子的每一边都小于另一个箱子的对应边,那就称这个箱子小于另一个箱子,然后要求能够套出的最多的箱子. 要注意的是关系图的构建,对箱子的边排序,如果分别都小于另一个箱子就说明 ...

  8. UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)

     Stacking Boxes  Background Some concepts in Mathematics and Computer Science are simple in one or t ...

  9. UVa 103 - Stacking Boxes

    题目大意:矩阵嵌套,不过维数是多维的.有两个个k维的盒子A(a1, a1...ak), B(b1, b2...bk),若能找到(a1...ak)的一个排列使得ai < bi,则盒子A可嵌套在盒子 ...

  10. uva 103(最长递增子序列) Stacking Boxes

    大意是有一些n维的物体,他的边也是n条,如果将一个物体的边按任意顺序排列,只要有一种排列满足一一对应小于另一物体的边,就可以将这个物体嵌套进去另一个物体中,文最多能连续嵌套几个物体. 所求的最多的连续 ...

随机推荐

  1. Centos 安装 MySQL-python

    更新yum yum update yum install mysql-devel yum install gcc yum install python-devel pip install MySQL- ...

  2. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2)---ABC

    A---The King's Race http://codeforces.com/contest/1075/problem/A 题意: 一个人在\((1,1)\), 一个人在\((n,n)\), 现 ...

  3. Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)

    A. Fraction 题目链接:http://codeforces.com/contest/854/problem/A 题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足 ...

  4. Effective Objective-C 笔记之熟悉OC

    1.在一个类的头文件中尽量少引用其他头文件 如果Person.h 引入了EmployeePerson.h,而后续又有其他类如Human.h又引入了Person.h, 那么EmployeePerson. ...

  5. FW 常见的性能测试工具有: loadRunner/netperf/httperf/apache_ab/Apache JMeter

    常见的性能测试工具有: loadRunner/netperf/httperf/apache_ab/Apache JMeter , 其中loadRunner属于付费软件,所以在这里不做介绍 netper ...

  6. Arrow-一个最好用的日期时间Python处理库

    https://www.jianshu.com/p/c878bb1c48c1 写过Python程序的人大都知道,Python日期和时间的处理非常繁琐和麻烦,主要有以下几个问题: 有众多的package ...

  7. hmm用于speech和image

    隐马尔科夫模型用于speech和image的原因是,因为hmm模型主要是适用于前后特征有关联性(参考骰子案例)的数据,有三种模式, 其中一种模式就是通过数据输出判断来源分类,而speech和image ...

  8. Python开发【笔记】:什么是RESTful框架

    RESTful框架 前言:  一句话总结:用URL定位资源,用HTTP描述操作 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...

  9. javaScript错误(一)Cannot call method 'addEventListener' of null

    Cannot call method 'addEventListener' of null 原因很简单,JavaScript代码中要引用到DOM对象,但是这个DOM对象在JavaScript执行后才会 ...

  10. android 6.0之后动态获取权限

    Android 6.0 动态权限申请   1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限 ...