题目链接: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)的更多相关文章

  1. hdu 5534(dp)

    Input The first line contains an integer T indicating the total number of test cases. Each test case ...

  2. HDU 5800 (DP)

    Problem To My Girlfriend (HDU 5800) 题目大意 给定一个由n个元素组成的序列,和s (n<=1000,s<=1000) 求 :   f (i,j,k,l, ...

  3. hdu 5464(dp)

    题意: 给你n个数,要求选一些数(可以不选),把它们加起来,使得和恰好是p的倍数(0也是p的倍数),求方案数. - - 心好痛,又没想到动规 #include <stdio.h> #inc ...

  4. HDU 2571(dp)题解

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. Find a path HDU - 5492 (dp)

    Find a path Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. 饭卡 HDU - 2546(dp)

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家 ...

  7. HDU 4489(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4489 解题思路这里已经说的很清楚了: http://blog.csdn.net/bossup/article/d ...

  8. hdu 1024(dp)

    传送门:Max Sum Plus Plus 题意:从n个数中选出m段不相交的连续子段,求这个和最大. 分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][ ...

  9. AreYouBusy HDU - 3535 (dp)

    AreYouBusy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. HDU 2577(DP)

    题意:要求一个字符串输入,按键盘的最少次数.有Caps Lock和Shift两种转换大小写输入的方式 思路:用dpa与dpb数组分别记录Caps Lock的开关状态,dpa表示不开,dpb表示开 代码 ...

随机推荐

  1. DNS配置注意事项 正在连接网络

    故障现象 公司规模不是很大,大概有50多台计算机,购买了两台IBM服务器.由于内部使用的某个应用软件需要Windows域的支持,所以在这两台IBM服务器上启用了windows 2000 Server的 ...

  2. Haskell语言学习笔记(22)MaybeT

    Monad Transformers Monad 转换器用于将两个不同的Monad合成为一个Monad.Monad 转换器本身也是一个 Monad. MaybeT MaybeT 这个 Monad 转换 ...

  3. vim使用方法:

    vim使用方法: 模式: 编辑模式.未编辑模式.命令行模式 i 插入形式进入编辑模式 a 增加 o 下行编辑 O 上行插入 : 进入命令行模式 esc 退出编辑模式 wq 保存文件 yy 复制 p 粘 ...

  4. lnmp上传文件

    LAMP环境: Linux Mint 16 32bits xfce apache 2.4.6 Ubuntu php 5.5.3 默认www是/var/www,我用符号连接到了/home/tony/ww ...

  5. Alpha Level (Significance Level)

    1.Alpha Level (Significance Level,显著水平): What is it? 显著性水平α是指当零假设是正确的,但做出了错误决策的概率(即一类错误的概率).Alpha水平( ...

  6. zookeeper集群搭建 windows

    本次zk测试部署版本为3.4.6版本,下载地址http://mirrors.cnnic.cn/apache/zookeeper/ 限于服务器个数有限本次测试了两种情况 1.单节点方式:部署在一台服务器 ...

  7. nat 类型及打洞原理

    nat 类型分4种 1.全锥形 full cone A 与 主机B交互,nat转换 A的内部地址及端口为  ip1 port1,ip1和port1为对外地址,任何机器能访问. 2.ip 受限制(对B而 ...

  8. Oracle to_date()函数的用法《转载》

    to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明, 原文地址:http://database.51cto.com/art ...

  9. 关于插入date型数据

    create table student (name varchar2(10) not null primary key , enrolldate date not null);//创建student ...

  10. input disable手机端颜色兼容问题

    color: #5b636d; -webkit-text-fill-color: #5b636d; opacity: 1; -webkit-opacity: 1; input在移动端会有padding ...