题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069

题目大意:给你n块砖, 每块的长, 宽, 高, 可以任意转换方位, 每种砖都有无限个, 用这些砖叠成塔, 上面的长宽要小于在它下面的长宽, 求塔高最高是多少?

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cstdlib>
 6 #include <cmath>
 7 #include <set>
 8 #include <map>
 9 #include <vector>
10 using namespace std;
11
12 struct node
13 {
14     int l, w, h;
15 }a[100];
16 int cmp(node a, node b)
17 {
18     if(a.l != b.l)
19         return a.l > b.l;
20     else
21         return a.w > b.w;
22 }
23 int main()
24 {
25     int n, x[3], i, j, dp[100], cnt = 0;
26     while(~scanf("%d", &n))
27     {
28         cnt++;
29         if(n == 0)
30             break;
31         for(i = 1; i <= n; i++)
32         {
33             scanf("%d %d %d", &x[0], &x[1], &x[2]);
34             sort(x, x + 3);
35             a[i * 3].l = x[2], a[i * 3].w = x[1], a[i * 3].h = x[0];
36             a[i * 3 - 1].l = x[1], a[i * 3 - 1].w = x[0], a[i * 3 - 1].h = x[2];
37             a[i * 3 - 2].l = x[2], a[i * 3 - 2].w = x[0], a[i * 3 - 2].h = x[1];
38         }
39         sort(a + 1, a + n * 3 + 1, cmp);
40         memset(dp, 0, sizeof(dp));
41         int sum = 0;
42         for(i = 1; i <= n * 3; i++)
43         {
44             int t = 0;
45             for(j = 1; j <= i; j++)
46             {
47                 if(a[i].l < a[j].l && a[i].w < a[j].w && t < dp[j])
48                     t = dp[j];
49             }
50             dp[i] = t + a[i].h;
51             if(dp[i] > sum)
52                 sum = dp[i];
53         }
54         printf("Case %d: maximum height = %d\n", cnt, sum);
55     }
56     return 0;
57 }

转载于:https://www.cnblogs.com/luomi/p/5475280.html

杭电1069_01背包相关推荐

  1. 杭电1284钱币兑换问题—背包dp/母函数(java)

    Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...

  2. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  3. 2022“杭电杯”中国大学生算法设计超级联赛(8)

    2022"杭电杯"中国大学生算法设计超级联赛(8) [题目链接](Search Result (hdu.edu.cn)) D Quel'Thalas 题目大意 在二维平面上,[0, ...

  4. hdoj杭电问题分类

    杭电上的题虽然多,但是一直苦于找不到问题分类,网页都是英文的,所以平时做题也没怎么看,今天仔细一看,问题分类竟然就在主页....做了那么久的题居然没发现,表示已经狗带..不要笑,不知道有没有像我一样傻 ...

  5. 杭电46道DP牛人总结

    原文地址:杭电46道DP牛人总结作者:飞泉鸣玉 杭电46道DP牛人总结 HDU 动态规划(46道题目)倾情奉献~ [只提供思路与状态转移方程] 收藏 Robberies http://acm.hdu. ...

  6. 2022“杭电杯”中国大学生算法设计超级联赛 (1) 杭电多校第一场 2 3 4 5 8 12

    题目 1002 Dragon slayer 标程 1003 Backpack AC代码 1004 Ball AC代码 1008 Path AC代码 1009 Laser AC代码 1012 Alice ...

  7. 杭电60道DP问题总结(一)

    杭电60道DP问题总结: DP是一个很有艺术的思想.看似简单的背后却隐藏着深刻的含义. 题目连接地址:http://acm.hdu.edu.cn/problemclass.php?id=516& ...

  8. 2022杭电多校(一)

    2022杭电多校(一) 文章目录 2022杭电多校(一) 一.比赛小结 二.题目分析及解法(基础题) 1001.String 1002.Dragon slayer 1003.BackPack 1004 ...

  9. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

最新文章

  1. 杨超越的声音+高晓松的脸~如此酸爽的技术,你值得拥有!
  2. cocos2d 左下角三行
  3. mysql 优化300例_PHP+MySQL实现对一段时间内每天数据统计优化操作实例
  4. 新手如何快速上手Linux,韦东山告诉你。
  5. ssh自动输入密码登录服务器/ssh免输入密码登录/非交互ssh 密码验证
  6. 5.TCP/IP 详解卷1 ---RARP:逆地址解析协议
  7. 【深度解析】Google第二代深度学习引擎TensorFlow开源
  8. Eclipse maven构建springmvc项目
  9. 数据结构:顺序栈的基本操作及实现
  10. python提取身份证信息查询_Python+Opencv身份证号码区域提取及识别实现
  11. 信创项目基础软件都包括哪些?你要了解
  12. mysql 左连接查询只取右边一条数据_MySQL的左连接查询,只取出最大的一条数据...
  13. 勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
  14. vue.jsv-html,Vue.js-资料-组件化思想 —下
  15. Python中的if __name__ == ‘__main__‘什么意思?
  16. dss nginx 403 forbidden
  17. CompareTo和compare的区别
  18. 数据结构(邓俊辉)-[第8章]
  19. pip 安装protobuf_Python3.6安装protobuf模块+将proto文件转换成pb2.py文件
  20. rtl8139网卡驱动源码解析

热门文章

  1. 疯狂ios讲义疯狂连载之日期选择器(UIDatePicker)
  2. window 服务(一)
  3. 今天做了一个DNN的模块,填到它默认的home页(关于DNN新建模块无法操作)
  4. 冯小刚导演系列公益短片之林心如版
  5. row height
  6. cambridge sharing note 1
  7. python基础:并行遍历ZIP()函数介绍
  8. 上海启动5G试用!104页PPT,为你深度解析5G终端的创新和机遇
  9. 4.编写程序,打印1到100之内的整数,但数字中包含7的要跳过
  10. 6.1-6.4 gzip、Bzip2、xz