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 ...
随机推荐
- 【C++基础教程】第四课
上次的课后练习 第1题输出: 第二题输出:1 第三题: #include<iostream> #include<cmath> using namespace std; int ...
- jquery动态生成dom(比如append)导致js事件无效
如果无效用这个方法: on() 方法在被选元素及子元素上添加一个或多个事件处理程序. <div id="zkdiv"> <input type="bu ...
- TP5关联模型出现疑问,待解决
一对一: hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型'); 说明:其他模型一对一都可以按照手册说明写,但上面代码只能这么写才能执行正确答案, 如果是 / ...
- Jvm调优理论篇
Jvm实战调优 OOM(Out Of Memory) 内存溢出错误 ps:由于Java虚拟机有许多实现,本文主要阐述的是OpenJDK的HotSpot虚拟机,JDK版本是8. 一.首先要明白造成OOM ...
- postman 插件安装
本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,https:/ ...
- Orchard Core 配置项说明
Orchard Core使用IShellConfiguration扩展了ASP.NET Core IConfiguration,以允许在应用程序范围的配置之上进行特定于租户的配置.虽然本文档使用Orc ...
- P6628-[省选联考 2020 B 卷] 丁香之路【欧拉回路,最小生成树】
正题 题目链接:https://www.luogu.com.cn/problem/P6628 题目大意 给出\(n\)个点的一张完全无向图,\(i\sim j\)的边权是\(|i-j|\). 然后给出 ...
- CF802O-April Fools‘ Problem(hard)【wqs二分,优先队列】
正题 题目链接:https://www.luogu.com.cn/problem/CF802O 题目大意 \(n\)天每条有\(a_i\)和\(b_i\). 每条可以花费\(a_i\)准备至多一道题, ...
- NOI.AC#2139-选择【斜率优化dp,树状数组】
正题 题目链接:http://noi.ac/problem/2139 题目大意 给出\(n\)个数字的序列\(a_i\).然后选出一个不降子序列最大化子序列的\(a_i\)和减去没有任何一个数被选中的 ...
- Winform 实现图片轮播(解决Image.FromFile内存不足)
前言 最近项目中需要在winform中做一个类似于网页那种轮播的效果,这里做下记录. 实现 整体的实现思路如下: 读取图片文件夹. 建立一个集合存储Image对象. 定时器定时更换PictrueBox ...