hdu 1069 Monkey and Banana(记忆搜)
题意:
N(不超过30)种木块,每种木块有长、宽、高x,y,z。
木块A可以搭在木块B上当且仅当A的底面长和宽都分别小于B的顶面的长与宽,即不能有超出B的部分。
问垒起来的“木块塔”的最大高度。
思路:
每种木块有6种形态,所以总共有6*N种木块,列张二维关系表,然后记忆搜。
代码:
struct node{
int x,y,z;
}
b[355]; int dp[355];
int c;
bool mp[355][355]; int dfs(int x){
if(dp[x]!=-1) return dp[x];
bool yes = false;
rep(i,1,c) if(mp[x][i]){
dp[x] = max( dp[x],dfs(i)+b[x].z );
yes = true;
}
if(yes==false){
dp[x]=b[x].z;
}
return dp[x];
} int main(){ int n;
int T=0;
while(scanf("%d",&n)!=EOF && n>0){
rep(i,1,n){
scanf("%d%d%d",&b[i].x,&b[i].y,&b[i].z);
}
c = n;
rep(i,1,n){
b[++c].x=b[i].y; b[c].y=b[i].x; b[c].z=b[i].z;
b[++c].x=b[i].x; b[c].y=b[i].z; b[c].z=b[i].y;
b[++c].x=b[i].z; b[c].y=b[i].y; b[c].z=b[i].x;
b[++c].x=b[i].z; b[c].y=b[i].x; b[c].z=b[i].y;
b[++c].x=b[i].y; b[c].y=b[i].z; b[c].z=b[i].x;
} mem(mp,false); //mp[i][j]==true:第i种可以放到第j种上 rep(i,1,c){
rep(j,1,c){
if(b[i].x<b[j].x && b[i].y<b[j].y){
mp[i][j]=true;
}
if(b[i].x>b[j].x && b[i].y>b[j].y){
mp[j][i]=true;
}
}
} mem(dp,-1);
int ans = -1; rep(i,1,c){
if(dp[i]==-1){
ans = max( ans,dfs(i) );
}else{
ans = max( ans,dp[i] );
}
} printf("Case %d: maximum height = %d\n",++T,ans);
} return 0;
}
hdu 1069 Monkey and Banana(记忆搜)的更多相关文章
- HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径)
HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径) Description A group of researchers ar ...
- HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个.然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉. 现在给你M种 ...
- HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...
- HDU 1069 Monkey and Banana(二维偏序LIS的应用)
---恢复内容开始--- Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- HDU 1069 Monkey and Banana (DP)
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 1069—— Monkey and Banana——————【dp】
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- hdu 1069 Monkey and Banana
Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1069 Monkey and Banana(动态规划)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
随机推荐
- 深入学习Composer原理(四)
本系列第四篇文章,也是最后一篇 首先,我们先看看Composer的源码从哪里看起.当然,请您先准备好源码. composer init或者直接install之后,自动生成了一个vendor目录,这时您 ...
- nginx 禁止某IP访问
首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.181; 保存一下. 在nginx的配置文件nginx.conf中加入:inc ...
- Java基础系列(9)- 数据类型扩展及常见面试题
整数拓展 // 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x // 同一个数字在不同进制中,结果是不同的,进制换算 int i = 10; int i2 = 010; // 八进制 i ...
- npm卸载appium,重新安装桌面版appium
大家好,appium环境搭建的时候,我选的是使用npm安装appium,但我在使用过程中,发现这样安装的appium没有界面,都是需要通过命令行操作,对于我来说,有点吃力.最后,还是觉得初学就先用桌面 ...
- YbtOJ#593-木棍问题【费用流】
正题 题目链接:https://www.ybtoj.com.cn/contest/114/problem/3 题目大意 \(n*m\)的网格上有一些格子有木球,两个相邻木球直接可以有木棍. 两个\(L ...
- HTML的一些技巧
清除form表单 this.$refs.formName.resetFields() 验证表单 this.$refs.createForm.validate((valid) => {}) 当im ...
- Xamarin Android使用自签名证书
背景 项目中后台web服务部署成https服务时,需要使用SSL证书,如果我们不使用公共的CA时,怎么办? 不仅如此,因为是小项目,App应用主要是小范围使用,此时只有IP地址,根本没有域名,怎么办? ...
- 4-让线程睡眠的sleep方法
让线程睡眠的sleep方法 Thread类有一个静态的sleep方法,当一个执行中的线程调用了Thread的sleep方法,调用线程就会让出指定时间的执行权,也就是在这期间不参与CPU调度,但是该线程 ...
- Spring面试复习整理
Spring Spring核心分为三方面: 控制反转(IoC): 就是将创建对象的权利交给框架处理/控制,不需要人为创建,有效降低代码的耦合度,降低了开发成本. 依赖注入(DI): 容器动态地将将某种 ...
- C++ Primer 查漏补缺 —— C++ 中的各种初始化
初学者在刚开始读 C++ Primer 的时候,总是容易被书中各种初始化搞得头大:默认初始化.列表初始化.值初始化.类内初始值.构造函数初始值列表.new int 和 new int() 的区别... ...