当前位置:网站首页>HDU - 1069 Monkey and Banana(DP+LIS)
HDU - 1069 Monkey and Banana(DP+LIS)
2022-07-01 05:28:00 【WA_ automata】
Monkey and Banana
Problem Description
A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks. If the monkey is clever enough, it shall be able to reach the banana by placing one block on the top another to build a tower and climb up to get its favorite food.
The researchers have n types of blocks, and an unlimited supply of blocks of each type. Each type-i block was a rectangular solid with linear dimensions (xi, yi, zi). A block could be reoriented so that any two of its three dimensions determined the dimensions of the base and the other dimension was the height.
They want to make sure that the tallest tower possible by stacking blocks can reach the roof. The problem is that, in building a tower, one block could only be placed on top of another block as long as the two base dimensions of the upper block were both strictly smaller than the corresponding base dimensions of the lower block because there has to be some space for the monkey to step on. This meant, for example, that blocks oriented to have equal-sized bases couldn’t be stacked.
Your job is to write a program that determines the height of the tallest tower the monkey can build with a given set of blocks.
Input
The input file will contain one or more test cases. The first line of each test case contains an integer n,
representing the number of different blocks in the following data set. The maximum value for n is 30.
Each of the next n lines contains three integers representing the values xi, yi and zi.
Input is terminated by a value of zero (0) for n.
Output
For each test case, print one line containing the case number (they are numbered sequentially starting from 1) and the height of the tallest possible tower in the format “Case case: maximum height = height”.
Sample Input
1
10 20 30
2
6 8 10
5 5 5
7
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
5
31 41 59
26 53 58
97 93 23
84 62 64
33 83 27
0
Sample Output
Case 1: maximum height = 40
Case 2: maximum height = 21
Case 3: maximum height = 28
Case 4: maximum height = 342
The question : Given n Kind of The three-dimensional length of the box , There are an infinite number of each , Make you a tower , The length and width of the lower part of two adjacent cuboids are strictly greater than the length and width of the upper part , Find the highest stackable height ;
analysis : Each cuboid can be placed in six ways , We sort all the placement methods of all the cuboids from small to large by length and width , set up dp[i] It means the... After sorting i A box is the highest height that can be stacked at the bottom , Then go ahead and find an update that is smaller than its length, width and strictness , namely :
d p [ i ] = m a x ( ∑ j = 0 i − 1 d p [ j ] + k [ i ] . h ) dp[i]=max(\sum_{j=0}^{i-1}dp[j]+k[i].h) dp[i]=max(j=0∑i−1dp[j]+k[i].h)
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<array>
using namespace std;
int main()
{
int n,T=1;
while(cin>>n,n)
{
vector<array<int,3> > k;
for(int i=1;i<=n;i++)
{
int a,b,c;cin>>a>>b>>c;
k.push_back({
a,b,c});
k.push_back({
a,c,b});
k.push_back({
b,a,c});
k.push_back({
b,c,a});
k.push_back({
c,a,b});
k.push_back({
c,b,a});
}
sort(k.begin(),k.end());
vector<int> dp(6*n);
for(int i=0;i<6*n;i++)
{
dp[i]=k[i][2];
for(int j=0;j<i;j++)
if(k[i][0]>k[j][0] && k[i][1]>k[j][1])
dp[i]=max(dp[i],dp[j]+k[i][2]);
}
int ans=0;
for(int i=0;i<6*n;i++) ans=max(ans,dp[i]);
cout<<"Case "<<T++<<": maximum height = "<<ans<<endl;
}
return 0;
}
边栏推荐
- [ffmpeg] [reprint] image mosaic: picture in picture with wheat
- Unity 使用Sqlite
- Global and Chinese market of metal oxide semiconductor field effect transistors 2022-2028: Research Report on technology, participants, trends, market size and share
- AcWing 886. Finding combinatorial number II (pretreatment factorial)
- Numeric amount plus comma; JS two methods of adding three digits and a comma to numbers; JS data formatting
- Mathematical knowledge: finding the number of divisors
- More than one file was found with OS independent path ‘lib/armeabi-v7a/libyuv. so‘.
- 了解 JVM 中几个相关问题 — JVM 内存布局、类加载机制、垃圾回收
- Leetcode top 100 questions 1 Sum of two numbers
- 智慧运维:基于 BIM 技术的可视化管理系统
猜你喜欢

Copier le matériel de conseils de bébé ne peut pas être vide, comment résoudre?

LRU cache for leveldb source code analysis

数字金额加逗号;js给数字加三位一逗号间隔的两种方法;js数据格式化

Dynamic verification of new form items in El form; El form verifies that the dynamic form V-IF does not take effect;

Causes of short circuit of conductive slip ring and Countermeasures

Use and principle of reentrantlock

Leetcode316- remove duplicate letters - stack - greedy - string

工业导电滑环的应用

Actual combat: gateway api-2022.2.13

In depth understanding of condition source code interpretation and analysis of concurrent programming
随机推荐
如何开始学剪辑?零基础详细解析
Global and Chinese market of paper machine systems 2022-2028: Research Report on technology, participants, trends, market size and share
Rust基础入门之变量绑定与解构
Daily question -leetcode1175- permutation of prime numbers - Mathematics
How to traverse massive data in redis
0xc000007b the application cannot start the solution normally (the pro test is valid)
液压滑环的特点讲解
RecycleView的一些使用
移动端常用解决方案
Global and Chinese market of 3D design and modeling software 2022-2028: Research Report on technology, participants, trends, market size and share
Global and Chinese market of search engine optimization (SEO) software 2022-2028: Research Report on technology, participants, trends, market size and share
C# wpf 使用DockPanel实现截屏框
在Rainbond中一键部署高可用 EMQX 集群
Explanation of characteristics of hydraulic slip ring
How to hide browser network IP address and modify IP internet access?
QDataStream的简单读写验证
TypeORM 框架
LevelDB源码分析之LRU Cache
Global and Chinese market of enterprise wireless LAN 2022-2028: Research Report on technology, participants, trends, market size and share
[ffmpeg] [reprint] image mosaic: picture in picture with wheat