hdu-1069(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069
题意:一群猴子,给出n块砖的长x宽y高z,用这些砖拼起的高度最高是多少,
要求底下的砖的长宽都要大于上面那块。堆出高度最高的猴子最聪明。现在问最多能达到多高。
思路:从n块砖中找出x块砖并满足长宽要求使高度最高,可以用动态规划来做。
先按照砖的x,y升序排序,类似最长不下降子序列。
状态转移方程:dp[i]=h[i]+max(dp[0]……dp[i-1]);
参考文章:https://blog.csdn.net/lttree/article/details/26606947
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
struct Node{
int l,w,h;
};
vector <Node> vc;
int dp[];
bool cmp(Node a,Node b)
{
if(a.l!=b.l) return a.l<b.l;
else return a.w<b.w;
}
int main(void)
{
int n,x,y,z,pt=;
Node tmp;
while(~scanf("%d",&n)&&n)
{
vc.clear();
memset(dp,,sizeof(dp));
while(n--)
{
scanf("%d %d %d",&x,&y,&z);
tmp.l=x;tmp.w=y;tmp.h=z;vc.push_back(tmp);
tmp.l=x;tmp.w=z;tmp.h=y;vc.push_back(tmp);
tmp.l=y;tmp.w=x;tmp.h=z;vc.push_back(tmp);
tmp.l=y;tmp.w=z;tmp.h=x;vc.push_back(tmp);
tmp.l=z;tmp.w=y;tmp.h=x;vc.push_back(tmp);
tmp.l=z;tmp.w=x;tmp.h=y;vc.push_back(tmp);
}
sort(vc.begin(),vc.end(),cmp);
int mx,j,i,l=vc.size();
dp[]=vc[].h;
for(i=;i<l;i++)
{
mx=;
for(j=;j<i;j++)
{
if(vc[j].l<vc[i].l&&vc[j].w<vc[i].w)
mx=mx>dp[j]?mx:dp[j];
}
dp[i]=vc[i].h+mx;
}
mx=;
for(i=;i<l;i++)
{
mx=mx>dp[i]?mx:dp[i];
}
printf("Case %d: maximum height = %d\n",pt++,mx);
}
return ;
}
hdu-1069(dp)的更多相关文章
- hdu 5534(dp)
Input The first line contains an integer T indicating the total number of test cases. Each test case ...
- HDU 5800 (DP)
Problem To My Girlfriend (HDU 5800) 题目大意 给定一个由n个元素组成的序列,和s (n<=1000,s<=1000) 求 : f (i,j,k,l, ...
- hdu 5464(dp)
题意: 给你n个数,要求选一些数(可以不选),把它们加起来,使得和恰好是p的倍数(0也是p的倍数),求方案数. - - 心好痛,又没想到动规 #include <stdio.h> #inc ...
- HDU 2571(dp)题解
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- Find a path HDU - 5492 (dp)
Find a path Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 饭卡 HDU - 2546(dp)
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家 ...
- HDU 4489(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4489 解题思路这里已经说的很清楚了: http://blog.csdn.net/bossup/article/d ...
- hdu 1024(dp)
传送门:Max Sum Plus Plus 题意:从n个数中选出m段不相交的连续子段,求这个和最大. 分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][ ...
- AreYouBusy HDU - 3535 (dp)
AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 2577(DP)
题意:要求一个字符串输入,按键盘的最少次数.有Caps Lock和Shift两种转换大小写输入的方式 思路:用dpa与dpb数组分别记录Caps Lock的开关状态,dpa表示不开,dpb表示开 代码 ...
随机推荐
- win10 QQ远程协助部分界面点不了
win10 QQ远程协助部分界面点不了. 把对方电脑的电脑管家全部退出,退出了也不行. 是win10的防火墙?安全策略?
- as3 运算与检查String 是否能够正确转换成数 值
如果忘了对一个Number 型变量初始化,那么这个变量参与的任何数学运算的结果都是NaN:如果最终结果赋值给有声明类型的变量,那么为该变量的默认值(仅限uint ,int). var a:Number ...
- Redis基本操作-string
Redis的5种数据结构:string.list.hash.set和zset; Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数 ...
- Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To sta
有三种导致这种错误的原因. 第一个: 是因为tomcat的服务没有被关闭所导致的,将服务关闭即可 找到tomcat的安装目录,进入bin文件夹,找到tomcat7w.exe,双击这个文件,点击stop ...
- PL/SQL Developer安装教程以及汉化包安装教程
一.安装PL/SQL 1.百度下载plsql破解版软件,官网只能使用30天 2.双击plsqldev906.exe进行安装,点击 iagree 3.默认是安装在c盘,可以根据自己需要更改安装目录 4. ...
- iBatis与Hibernate有什么不同?
相同点:屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以访问数据. jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节 ...
- redis安装和命令使用
前言: redis是一个key-value的存储系统,value支持string.list.set.zset.hash五种类型,且支持数据的本地存储 一.安装redis 前提:linux下需要安装 ...
- css position定位详解
position:static 默认方式: position:relative 相对定位,相对于原有位置进行移动,并且保留它在文件流中的占位: position:absolute 绝对定位,相对于最近 ...
- Largest Rectangle in a Histogram(附上几组测试数据)
Largest Rectangle in a Histogram http://acm.hdu.edu.cn/showproblem.php?pid=1506 Time Limit: 2000/100 ...
- Ecshop模板目录介绍[xyytit]
一. 模板系统介绍 Ecshop模板系统使用我们自行研发的模板控制系统和著名的PHP开源模板程序Smarty组合而成.为了方便用户开发模板,还使用了Dreamweaver的模板和库的功能Smarty中 ...