hdu1069
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
class Data
{
public:
int S, Height;
int upl, uph;
};
Data Da[100];
int n;
int dp[100];
int cmp(const Data &a, const Data &b) //按照面积最大或高度最高排序
{
if(a.S != b.S)
return a.S > b.S;
else
return a.Height > b.Height;
}
int main()
{
// freopen("data.txt", "r", stdin);
int i, j, k, Case = 1;
int a, b, c;
while(cin >> n && n)
{
k = 0;
memset(dp, 0, sizeof(dp));
for(i = 0; i < n; i++) //计算每一个面的面积,以及顶面的长宽以及高度
{
cin >> a >> b >> c;
Da[k].S = a * b; Da[k].upl = a > b ? a : b; Da[k].uph = a > b ? b : a;
Da[k++].Height = c;
Da[k].S = a * c; Da[k].upl = a > c ? a : c; Da[k].uph = a > c ? c : a;
Da[k++].Height = b;
Da[k].S = b * c; Da[k].upl = b > c ? b : c; Da[k].uph = b > c ? c : b;
Da[k++].Height = a;
}
sort(Da, Da + k, cmp); //排序
int ans = 0;
for(i = 0; i < k; i++) //动态规划
{
dp[i] = Da[i].Height;
for(j = 0; j < i; j++)
{
if(Da[i].S < Da[j].S && Da[i].upl < Da[j].upl && Da[i].uph < Da[j].uph) //判断是否符合
{
dp[i] = dp[i] > dp[j] + Da[i].Height ? dp[i] : dp[j] + Da[i].Height;
}
}
if(ans < dp[i]) //最大高度
ans = dp[i];
}
cout << "Case " << Case++ << ": maximum height = " << ans << endl;
}
return 0;
}
hdu1069的更多相关文章
- HDU1069 Monkey and Banana
HDU1069 Monkey and Banana 题目大意 给定 n 种盒子, 每种盒子无限多个, 需要叠起来, 在上面的盒子的长和宽必须严格小于下面盒子的长和宽, 求最高的高度. 思路 对于每个方 ...
- HDU-1069 Monkey and Banana DAG上的动态规划
题目链接:https://cn.vjudge.net/problem/HDU-1069 题意 给出n种箱子的长宽高 现要搭出最高的箱子塔,使每个箱子的长宽严格小于底下的箱子的长宽,每种箱子数量不限 问 ...
- ACM-经典DP之Monkey and Banana——hdu1069
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- HDU1069:Monkey and Banana(DP+贪心)
Problem Description A group of researchers are designing an experiment to test the IQ of a monkey. T ...
- hdu1069(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 分析: 每种石头有六种方法,那么等效为:有6*n种石头. 根据x和y排序(要保证相应的x.y总有 ...
- HDU1069 最长上升子序列
emm....矩形嵌套 还记得吗....就是它... 直接贴代码了.... import java.util.ArrayList; import java.util.Arrays; import ja ...
- hdu1069线性dp
/* dp[i]:取第i个方块时最多可以累多高 */ #include<bits/stdc++.h> using namespace std; struct node{ int x,y,z ...
- HDU-1069.MonkeyandBanana(LIS)
本题大意:给出n个长方体,每种长方体不限量,让你求出如何摆放长方体使得最后得到的总高最大,摆设要求为,底层的长严格大于下层的长,底层的宽严格大于下层的宽. 本题思路:一开始没有啥思路...首先应该想到 ...
- HDU1069(KB12-C)
Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU1069(还是dp基础)
今天不想说太多废话-由于等下要写自己主动提交机. 不知道能不能成功呢? 题目的意思就是,一个猴子,在叠砖头 ...以下的要严格大于上面的.求叠起来最高能到多少- n非常少,n^2算法毫无压力-话说dp ...
随机推荐
- Android进程间通信(IPC)机制Binder简要介绍和学习计划【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6618363 在Android系统中,每一个应用程序都是由一些Activity和Ser ...
- 关于 tornado.simple_httpclient SimpleAsyncHTTPClient fetch下载大文件,默认60s的问题
遇到了线上发布任务失败的情况,要发布的包大小77M,网络OK,手动测试速度是1.7M,下载77M文件用时17s左右,理论上完全没有问题 但是,从日志看确实是download的时候,60s 超时了,而且 ...
- UOJ130 【NOI2015】荷马史诗
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- APP被应用商店下架了怎么办?
上周五的时候,知乎被各大APP应用商店下架,原因是因为在应用内一些信息不符合相关的规定所以被强制性下架,看起来只是简单的一个应用被下架的事情.但是作为一个推广人员,我第一件事情想到的是,假如我自己公司 ...
- 解编码框架的比较(protobuf,thrift,Marshalling,xml)
1.ProtoBuf 特点: 1.结构化数据存储格式 2.高效的解编码性能. 3.语言无关,平台无关,扩展性好. 4.官方支持java,c++,python三种语言. 5.性能比较好 (与之对比xml ...
- 实现两个窗口通信方法-postMessage
此方案可解决跨域而且跨Iframe,而且http和https之间的交互 首先来看一下基本的语法 otherWindow.postMessage(message, targetOrigin, [tran ...
- 如何在Android开发中测试应用在真机上实验
1.首先将手机设置为调试模式 方法:设置——应用程序——开发——USB调试,打上√即可 2.用数据线连接至电脑 3.然后打开eclipse 右击点击工程,选择 Run as,再选择Run ...
- Arc065_E Manhattan Compass
平面上有$N$个点$(X_i\space, Y_i)$,定义$D(a,b)=|X_a-X_b|+|Y_a-Y_b|$. 如果你当前在$(p,q)$,这个无序二元组(即$(p,q)$和$(q,p)$被认 ...
- ACM学习历程—HDU 3092 Least common multiple(数论 && 动态规划 && 大数)
Description Partychen like to do mathematical problems. One day, when he was doing on a least common ...
- unity渲染层级关系小结
http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...