类似于叠箱子

对于箱子a : (a1,a2,a3),b : (b1,b2,b3)

存在一个顺序ai<bj,ak<bi,aj<bk 就表示a可以到b

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
#include <queue>
#include <stack>
#include <vector>
#include <deque>
#include <set>
#include <map>
#define IN     freopen ("in.txt" , "r" , stdin);
#define OUT  freopen ("out.txt" , "w" , stdout);
typedef long long  LL;
const int MAXN = 1111111;//点数的最大值
const int MAXM = 20006;//边数的最大值
const int INF = 11521204;
const int mod=1000000007;
int n,m;
struct node
{int x[44],num;friend bool operator < (const node&a, const node&b){for(int i=0; i<m; ++i){if(a.x[i]>b.x[i])return false;}return true;}
} a[100];
int dp[111];
int x[111];
void print(int i){if(x[i]!=i)print(x[i]);printf("%d ", a[i].num);
}
int main()
{IN;while(scanf("%d%d",&n,&m)!=EOF){memset(dp,0,sizeof(dp));memset(x,0,sizeof(x));dp[0]=1;for(int i=0; i<n; i++){for(int j=0; j<m; j++)scanf("%d",&a[i].x[j]);sort(a[i].x,a[i].x+m);//给维度排序a[i].num=i+1;//编号}sort(a,a+n);//全部排序int maxx=1,ans=0;for(int i=0; i<n; i++){for(int j=0; j<i; j++){int flag=0;for(int k=0; k<m; k++)//flag==0表示i与j可叠加{if(a[i].x[k]<=a[j].x[k])flag=1;}if(!flag&&dp[i]<dp[j]+1){dp[i]=dp[j]+1;x[i]=j;}if(dp[i]>maxx)//更新最大值{maxx=dp[i];ans=i;//起始}}}printf("%d\n",maxx);print(ans);//输出序列printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/kewowlo/p/4002557.html

【DP】UVA 103 Stacking Boxes 输出路径相关推荐

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

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

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

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

  3. UVa 103 - Stacking Boxes

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

  4. UVA 103 Stacking Boxes

    终于完成了啊,这可是我自己独立做的第一道DP题!激动ing--这题在白书里是DAG上的DP,可是我看不懂,比如怎么建图我就不会,所以代码都是自己想的.图我不会建,只好动下脑子,刚开始是想用二维数组保存 ...

  5. Pots (BFS ➕ 输出路径)

    题目链接:http://poj.org/problem?id=3414 思路: 因为有六种操作,所以六种操作中合法的都加入队列中BFS 如何去输出路径呢? 我们不妨设一个string数组,它的索引就和 ...

  6. LA 2957 最大流,最短时间,输出路径

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=1 ...

  7. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  8. 最短路径 输出路径 Dijkstra算法

    这个问题难受了半天终于搞懂了,来给分享一下 先弄个例子看看: B.wzy的大冒险--出发咯QAQ wzy踏上了冒险的旅程. 现在他从地精手里买了一份地图,地图上有n个城镇. 他从第一个城镇出发,走向( ...

  9. Hadoop概念学习系列之为什么hadoop/spark执行作业时,输出路径必须要不存在?(三十九)...

    很多人只会,但没深入体会和想为什么要这样? 拿Hadoop来说,当然,spark也一样的道理. 输出路径由Hadoop自己创建,实际的结果文件遵守part-nnnn的约定. 如何指定一个已有目录作为H ...

最新文章

  1. ubuntu16.04配置sonarqube+MySQL
  2. 方向盘开极品飞车9很Hapyy
  3. 系统集成项目管理工程师教程第二版
  4. java三国群雄_三国群英-真三国无双
  5. WMS智能仓储系统成长史?
  6. 第九章:SpringCloud Feign几个坑
  7. golang格式化输出---fmt包用法详解
  8. 【Linux学习笔记】Linux-CentOS下安装Redis
  9. 电涡流传感器9200-06-05-10-00本特利
  10. html 长度vm,css vm是什么单位?
  11. 智能门锁与网关:海康萤石智能门锁的网关分析(二)
  12. 选取销售订单开发票,控制销售订单中已开票金额
  13. 编辑中的word变成只读_word文件怎么将只读模式改为可以修改
  14. C语言实现扫雷OvO
  15. 企业如何通过APS系统进行产能规划?
  16. 【ViT论文】Not All Patches are What You Need: Expediting Vision Transformers via Token Reorganizations
  17. numpy选择特定的行列
  18. java漏斗代码_集算示例:10 行代码解决漏斗转换计算
  19. 深度linux系统,深度操作系统
  20. PTA实验7-1-1 简化的插入排序 (15分) 本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

热门文章

  1. 基础知识(四)Dijkstra算法
  2. SeDuMi教程(1)
  3. “一张图”解释特色小镇发展历程
  4. c语言虚参传递字符串,c语言中,一个函数作为另一个函数的虚参是什么意思? 先谢了...
  5. cefsharp irequesthandler_CefSharp请求资源拦截及自定义处理
  6. 计算机桌面上的公文包怎么加密,公文包的用法
  7. android 协程,Android 上的 Kotlin 协程
  8. 开机更新配置怎么关闭计算机,Win7关闭开关机的Windows Update配置()制作方法
  9. 本地连不上远程服务器mysql_mysql本地连不上远程
  10. java applog_Java Web App: 选择与配置日志库