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表示开 代码 ...
随机推荐
- div 标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- UI5-文档-4.9-Component Configuration
在我们介绍了模型-视图-控制器(MVC)概念的所有三个部分之后,现在我们将讨论SAPUI5的另一个重要的结构方面. 在这一步中,我们将把所有UI资产封装在一个独立于索引的组件中.html文件.组件是S ...
- net3.5 无网络环境安装
下载 提取码:t0dq 将下载的文件复制到复制到 C 盘的 Windows 文件夹 后请在“命令提示符(管理员)”中执行下面的命令: dism /online /Enable-Feature /F ...
- 【转】.net 实现 语音搜索(仅限WebKit内核浏览器)
<input type="text" class="text" name="value_2" id="value_2&quo ...
- 遍历python字典几种方法
遍历python字典几种方法 from: http://ghostfromheaven.iteye.com/blog/1549441 aDict = {'key1':'value1', 'key2': ...
- python 冷知识点
# int could accept parameters in bool type.int(True) # result is 1 int(False) # result is 0 reprlib. ...
- SQL语言类别
SQL语言主要分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. DQL (data query language) DML(data manipulati ...
- 集合赋值及for循环删除符合条件的元素
一.Java语言中ArrayList对象能直接赋值给另一个ArrayList对象吗? https://zhidao.baidu.com/question/399214655.html ArrayLis ...
- JPA报错, PersistenceException_Unable to build Hibernate SessionFactory
javax.persistence.PersistenceException: [PersistenceUnit: TestJPA] Unable to build Hibernate Session ...
- C++中的浅拷贝和深拷贝
浅拷贝(shallow copy)与深拷贝(deep copy)对于值拷贝的处理相同,都是创建新对象,但对于引用拷贝的处理不同,深拷贝将会重新创建新对象,返回新对象的引用字.浅拷贝不会创建新引用类型. ...