HDU 1069 Monkey and Banana 基础DP
题目链接: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的更多相关文章
- HDU 1069—— Monkey and Banana——————【dp】
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 1069 Monkey and Banana(DP——最大递减子序列)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=1069 题意描述: 给n块砖,给出其长,宽和高 问将这n块砖,怎样叠放使得满足以下条件使得 ...
- HDU 1069 Monkey and Banana (dp)
题目链接 Problem Description A group of researchers are designing an experiment to test the IQ of a monk ...
- HDU 1069 Monkey and Banana ——(DP)
简单DP. 题意:给出若干种长方体,如果摆放时一个长方体的长和宽小于另一个的长宽,那么它可以放在另一个的上面,问最高能放多少高度.每种长方体的个数都是无限的. 做法:因为每种个数都是无限,那么每种按照 ...
- HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个.然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉. 现在给你M种 ...
- 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 ...
- HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...
- HDU 1069 Monkey and Banana (DP)
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
随机推荐
- Java字符编码问题
今天研究了一下,记录下来 中间用的是redis,可以使用任意其他的io替代,一样的 Test1 String s1 = "我要测试"; String s2 = "I wa ...
- IntelliJ IDEA 插件
alibaba java coding guidelines 阿里巴巴Java编码指南插件支持. Mybatis-log-plugin 把 mybatis 输出的sql日志还原成完整的sql语句. ...
- 洛谷P1858 多人背包 多人背包板子题/多人背包学习笔记
,,,本来自以为,我dp学得还挺好的 然后今天一考发现都不会啊QAQ 连最基础的知识点都不清楚啊QAQ 所以就来写个题解嘛! 先放下板子题 其实我jio得,这题只要大概了解方法就不是很难鸭,,,毕竟是 ...
- django之中间件、缓存、信号、admin内置后台
目录: 中间件 缓存 信号 admin后台 一.中间件 1.什么是中间件? 中间件是一个.一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件 中间件可以对进来的请求和出去的 ...
- 数据挖掘-逻辑Logistic回归
逻辑回归的基本过程:a建立回归或者分类模型--->b 建立代价函数 ---> c 优化方法迭代求出最优的模型参数 --->d 验证求解模型的好坏. 1.逻辑回归模型: 逻辑回归(L ...
- react分享
后台项目应用分享 后台项目应用分享 webpack + react + redux + antd 后台项目应用分享 策略篇 框架选择 组件化开发 组件?组件! CSS in JS下的样式开发思路 展示 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON DispArc
zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc----------RAD Studio XE D ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON SqrtImage
zw版[转发·台湾nvp系列Delphi例程]HALCON SqrtImageHALCON SqrtImage 範例 (RAD Studio XE Delphi x64) zw版[转发·台湾nvp系列 ...
- zoj3822
这题说得是给了一个n*m的棋盘,每天在这个棋盘中放置一个棋子,不能放在之前已经摆放过得地方,求最后使得每行每列都有至少一个棋子的期望天数是多少,这样我们考虑怎么放,放哪里,显然数据大而且不知道状态怎么 ...
- spring AOP的两种代理
本篇记录下spring AOP的两种代理,为下一篇AOP实现做下铺垫. 1.JDK动态代理 2.cglib代理 1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2.如果目标对象 ...