杭电1069 Monkey and Banana
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1069
一开始看到这题我想不到什么思路,后来翻《算法竞赛入门经典》时发现它是第九章第二节的例题9-2巴比伦塔
书上提供了两点解题的点:
1.用有向无环图DAG的模型,其模板代码为:
int dp(int i)
{int& ans = d[i];if (ans > 0)return ans;ans = 1;for (int j = 1; j <= n; j++)if (G[i][j])ans = max(ans, dp(j) + 1);return true;
}
其中d[i]表示从点I到终点的最大值,G[i][j]表示i是否能到j点
2.如果用G[i][j]数组解题,会容易出现数组过大的情况,所以设置了(idx,k)这个二元组来表示,idx为立方体的编号,1<=k<=3,表示三条边。
最后的代码为:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <cmath>
#include <string>
#include <queue>
#include <stack>using namespace std;const int N = 35;int maps[N][N];
int d[N][N];
int k;
int n;void get(int *v, int i, int height)
{int ii=0;int j;for (j = 1; j <= 3; j++)if (j != height)v[ii++] = maps[i][j];
}int dp(int i, int j)
{int ii, jj;int& ans = d[i][j];if (ans > 0){return ans;}ans = 0;int v[3], v2[3];get(v, i, j);for(ii=1;ii<=n;ii++)for (jj = 1; jj <= 3; jj++){get(v2, ii, jj);if (v2[0] < v[0] && v2[1] < v[1])ans = max(ans, dp(ii, jj));}ans += maps[i][j];return ans;
}int main()
{int i, j, k;int ans;k = 1;while (scanf("%d",&n)!=EOF){if (n == 0)break;memset(d, 0, sizeof(d));ans = 0;for (i = 1; i <= n; i++){ for (j = 1; j <= 3; j++)scanf("%d", &maps[i][j]);sort(maps[i] + 1, maps[i] + 1 + 3);}for(i=1;i<=n;i++)for (j = 1; j <= 3; j++){ans = max(dp(i, j), ans);}printf("Case %d: maximum height = %d\n", k++, ans);}return 0;
}
杭电1069 Monkey and Banana相关推荐
- HDUOJ 1069 Monkey and Banana
HDUOJ 1069 Monkey and Banana 题目链接 Problem Description A group of researchers are designing an experi ...
- HDU 1069 Monkey and Banana 最长上升子序列进阶(动态规划)
HDU 1069(动态规划) Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- HDOJ 1069 Monkey and Banana
1:每一组X,Y,Z对应3个立方体 2:按面积从小到大DP Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- HDU 1069 Monkey and Banana(简单图解,经典DP,最大上升子序列变形)
题目链接 今天做的第二题,感觉比较经典,详细记录一下吧! Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- 三维最长上升子序列问题——HDU 1069 Monkey and Banana
题目: A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a ...
- hdu 1069 Monkey and Banana (LIS)
Problem - 1069 随便找到的一道题目. 题意是给出一些的长方体,长方体可以用任意次数,可以任意翻转.如果一个长方体可以叠在另一个长方体上,条件是这个长方体的长和宽严格小于另一个长方体的长和 ...
- hdu(1069)——Monkey and Banana(LIS变形)
题意: 如今给你n个石块,然后它由坐标来表示(x,y,z).可是它能够有不同的方法,也就是说它的三个坐标能够轮换着来的. 石块的数量不限,可是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所 ...
- HDU 1069 Monkey and Banana
传送门 #include<iostream> #include<algorithm> #include<map> #include<set> #incl ...
- hdu 1069 Monkey and Banana 【动态规划】
题目 题意:研究人员要测试猴子的IQ,将香蕉挂到一定高度,给猴子一些不同大小的箱子,箱子数量不限,让猩猩通过叠长方体来够到香蕉. 现在给你N种长方体, 要求:位于上面的长方体的长和宽 要小于 下面 ...
最新文章
- PostgreSQL系统表和视图
- stm32f401 i2s 时序图
- 什么样的计算机书才是市场需要的——2009年计算机图书选题策划方向(三) (全文完)...
- TortoiseSVN使用方法
- roads 构筑极致用户体验_智美双极 引领旗舰 亚洲龙探索革新的高品质体验
- 利用Android Camera2 的照相机api 实现 实时的图像采集与预览
- 简单获取PNG免扣素材,提升设计效率
- BZOJ3139: [Hnoi2013]比赛
- mysql 大表更新数据类型_MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)...
- Atitit.异常的设计原理与 策略处理 java 最佳实践 p93
- 数据结构之二叉树实现排序功能
- vmlinuz的产生
- ESP32-C3入门教程 WiFi篇⑥——基于串口的 WiFi 智能配网
- Mac OS 上MPV播放器常用快捷键
- LSTM反向传播公式推导
- 美团2015年校园招聘部分笔试题
- 2021最新外卖霸王餐小程序、H5、微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩源码下载
- 小米2s android7.0秋大,老炮儿?小米2s升级MIUI 7流畅一逼!
- APP——功耗测试(耗电测试)——adb命令简单获取分析
- (转)《达·芬奇密码》解读解密
热门文章
- 28岁转行程序员?别想了、没戏。事实真就如此残酷?
- 转行经历|裸辞九个月,终于拿到第一份工作的offer...
- 南卡和OPPO蓝牙耳机哪个好用?高品质的蓝牙耳机测评
- react-native-beacons-manager在Android上的使用 --工作笔记
- 松下GH5相机SD卡格式化后MP4视频碎片重组数据恢复方法
- jQuery UI Datepicker 选择时分秒
- Linux进程间关系之终端与终端登录
- 石家庄联通宽带DNS服务器地址
- GAMES101笔记_Lec01_计算机图形学概述 Overview of Computer Graphics
- 夏天我都冷到瑟瑟发抖-用单片机diy懒人挂脖风扇方案