题目链接:Monkey and Banana

大意:给出n种箱子的长宽高。每种不限个数。可以堆叠。询问可以达到的最高高度是多少。
要求两个箱子堆叠的时候叠加的面。上面的面的两维长度都严格小于下面的。

简单的DP,依然有很多地发给当时没想到。比如优先级,比如这么简单粗暴的选择。

 /*
大意是。给出n种箱子的长宽高。每种不限个数。可以堆叠。询问可以达到的最高高度是多少。
要求两个箱子堆叠的时候叠加的面。上面的面的两维长度都严格小于下面的。 样例:
10 20 30
10 20
10 30
20 30
可以摆放的方法:10 20
20 30
高度: 30+10 = 40 /思路:把所有种类的箱子的每个面的两维长度都列出来。n<=30,那么,箱子的面个数<=90。然后按照要求来开始堆叠。
问题是。我应该怎么来找当前最符合条件的呢。从两维长度都最大的开始吗。下一个怎么对应呢。还是应该从面积最大的开始。可能性太多。
以上出自无厘头系列。
/ 思路:给出一种箱子可以看做是三个箱子。(完全相同的两个面是不可能出现两次的。所以一个箱子最多会用三次、)。把所有的箱子按照先长后宽,从大到小排序。
然后(LIS。求最长递减子序列的思路。)dp[i] = j 表示从1到i的前i个(暂且当做从1开始)箱子里。在选第i个的前提下,得到的最大高度。
*/ #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std; struct Node {
int x, y, z;
}node[]; // 最多90个 bool cmp(Node a, Node b) {
if (a.x != b.x)
return a.x < b.x;
else return a.y < b.y;
} int h[]; int main() {
int n;
int num = ;
while(~scanf("%d", &n)) {
if (n == ) break;
num++;
for (int j=, i=; j<n; ++j) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
node[i].x = a, node[i].y = b, node[i].z = c;
node[i+].x = a, node[i+].y = c, node[i+].z = b;
node[i+].x = b, node[i+].y = c, node[i+].z = a;
i += ;
} for (int i=; i<n*; ++i) {
if (node[i].x < node[i].y) {
int temp = node[i].y;
node[i].y = node[i].x;
node[i].x = temp;
}
} sort(node, node+n*, cmp);
int ans = -; for (int i=; i<*n; ++i) {
h[i] = node[i].z;
for (int j=; j<i; ++j) {
if (node[j].x < node[i].x && node[j].y < node[i].y) {
h[i] = max(h[i], h[j]+node[i].z);
}
}
ans = max(ans, h[i]);
} printf("Case %d: maximum height = %d\n", num, ans);
}
return ;
}

HDU 1069 Monkey and Banana 基础DP的更多相关文章

  1. HDU 1069—— Monkey and Banana——————【dp】

    Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. HDU 1069 Monkey and Banana(DP——最大递减子序列)

    题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=1069 题意描述: 给n块砖,给出其长,宽和高 问将这n块砖,怎样叠放使得满足以下条件使得 ...

  3. HDU 1069 Monkey and Banana (dp)

    题目链接 Problem Description A group of researchers are designing an experiment to test the IQ of a monk ...

  4. HDU 1069 Monkey and Banana ——(DP)

    简单DP. 题意:给出若干种长方体,如果摆放时一个长方体的长和宽小于另一个的长宽,那么它可以放在另一个的上面,问最高能放多少高度.每种长方体的个数都是无限的. 做法:因为每种个数都是无限,那么每种按照 ...

  5. HDU 1069 Monkey and Banana dp 题解

    HDU 1069 Monkey and Banana 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个.然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉. 现在给你M种 ...

  6. HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径)

    HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径) Description A group of researchers ar ...

  7. HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...

  8. HDU 1069 Monkey and Banana (DP)

    Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  9. HDU 1069 Monkey and Banana(DP 长方体堆放问题)

    Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...

随机推荐

  1. ES6基础教程(整理自阮一峰)

    ------------------------ECMAScript 6 简介------------------------ECMAScript 和 JavaScript 的关系是,前者是后者的规格 ...

  2. Linux下编译安装Nginx1.12

    [准备工作] 所有操作需要在root用户下 本机测试案例系统信息:centos7.3 安装路径:/usr/local/nginx [安装Nginx] 先安装如下依赖包 $ yum install gc ...

  3. CentOS7下的YUM源服务器搭建详解,过程写的很详细(转)

    因为近期公司需要搭建一个YUM源服务器给大量的linux(mini)使用,所以因此在网上找了很多的教程,却没有一个特别详细的,很多都有遗漏,参差不齐.所以,打算自己做完之后方便以后查阅,特出此文档. ...

  4. 4.5 Routing -- Setting Up A Controller

    1. 改变URL可能也会改变屏幕显示哪个模板.然而,如果它们有信息去显示,模板才是有用的. 2. 在Ember.js中,一个模板从一个controller检索信息去显示. 3. 为了告诉control ...

  5. Webwork 学习笔记

    1. 首先配置一个简单的webwork应用 核心jar: commons-logging.jarognl.jaroscore.jarvelocity-dep.jarwebwork-2.1.7.jarx ...

  6. CDOJ 1048 Bob's vector(快速幂+三分法)

    题目大意:原题链接 给定数组A[i]的计算方法,求出其任意一个极值点 解题思路:求极值点用三分法,一般计算100次足矣,所以三分时上限为100,不过运行时间可能会长一点    用for循环    用w ...

  7. MFC中利用GDI+进行双缓冲作图的有关设置

    这里只是在遇到实际问题的时候提出的一种解决方法,用以处理闪屏问题. 首先要做的是对GDI的一个设置问题: 在应用程序类中添加一个保护权限数据成员 class C...App: {... private ...

  8. Vue学习笔记之vue-cli脚手架项目中组件的使用

    在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还 ...

  9. 20145311王亦徐《JAVA程序设计》课程总结

    20145311王亦徐<JAVA程序设计>课程总结 每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第 ...

  10. G-Sensor 8452驱动及相关

    8452是一款G-Sensor芯片,采用I2C跟主芯片通讯,采用中断方式跟操作系统协作.通过内部检测XYZ三个方向的加速度,实现各种应用. (1)原理框图如下: 现在来实现在WINCE中的I2C驱动, ...