题目链接: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. 从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图

    从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图 作者:naaoveGI…    文章来源:naaoveGIS    点击数:2063    更 ...

  2. centos 安装单机版 redis4.0.10

    redis源码地址: http://download.redis.io/releases/ 下载 redis-4.0.10.tar.gz  和  redis-stable.tar.gz 第一步:安装g ...

  3. sqlserver查询自定义的函数

    1)sp_helptext同样适应用自定义函数 2)sys.sql_modules表也可以查 查看函数的源代码: exec sp_helptext '函数名'

  4. pyplot-常用图表

    pyplot-常用图表 介绍最常用的:折线图.散点图.柱状图.直方图.饼图 的绘制 需要学习的不只是如何绘图,更是什么样的数据用什么图表显示效果最好 折线图 折线图用于显示随时间或有序类别的变化趋势 ...

  5. python面试题(转)

    下面的代码输出什么? list = ['a', 'b', 'c', 'd', 'e'] print list[10:] 上面的代码输出[],并且不会导致IndexError错误 跟你想的一样,当取列表 ...

  6. JavaScript 累加求和练习 函数

    输入一个数,求从1加到这个数的和 主要代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  7. jqeury datatable/http://www.cnblogs.com/jobs2/p/3431567.html

    0.http://blog.csdn.net/mickey_miki/article/details/8240477 1.1 修改默认值 代码  841处options 添加分页选择 oInit.bL ...

  8. 利用R产生随机数

    生成随机数有两个函数runif()和rnorm(),其中r表示的是random随机的意思,unif表示的是均匀分布,而norm表示的是正态分布. 1)生成10个2到3之间的,服从均匀分布的随机数:ru ...

  9. HttpClient 4 和 HttpClient 3 超时

    HttpClient 4: 连接超时: httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,6000 ...

  10. SVN服务器端的安装和配置

    第2章 SVN 的下载与安装 服务器端的安装和配置 所有的开发人员用自己的账号登录进来就可以拥有对仓库里面的所有文件的读和写的权限 创建用户