题意与分析

给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度。

表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次。然后就是对3n" role="presentation">3n3n的方格序列用LIS。

注意:排序和求LIS的标准不同,否则答案会错误。

代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std; template<typename T>
T read()
{
T tmp; cin>>tmp;
return tmp;
} struct Block
{
int x,y,z;
Block() {}
Block(int _x,int _y,int _z):x(_x),y(_y),z(_z) {}
bool operator < (const Block& rhs) const
{
if(x==rhs.x) return y>rhs.y;
else return x>rhs.x;
}
}; vector<Block> vec;
void add_vec(int x,int y,int z)
{
if(x>y) swap(x,y);
if(x>z) swap(x,z);
if(y>z) swap(y,z);
vec.PB(Block(y,z,x));
vec.PB(Block(x,z,y));
vec.PB(Block(x,y,z));
}
int main()
{
int n,kase=0;
while(cin>>n)
{
vec.clear();
if(!n) break;
rep(i,1,n)
{
int x,y,z; cin>>x>>y>>z;
add_vec(x,y,z);
}
sort(ALL(vec));
int dp[105],sz=vec.size(); ZERO(dp);
//rep(i,0,sz-1) cout<<dp[i]<<" ";
//cout<<endl;
rep(i,0,sz-1)
{
dp[i]=vec[i].z;
rep(j,0,i-1)
{
//cout<<vec[j].x<<" "<<vec[i].x<<" "<<vec[j].y<<" "<<vec[i].y<<endl;
if(vec[j].x>vec[i].x && vec[j].y>vec[i].y)
{
dp[i]=max(dp[i],dp[j]+vec[i].z);
//cout<<"Yeah, "<<j<<">"<<i<<endl;
}
}/*
rep(j,0,sz-1)
cout<<dp[j]<<" ";
cout<<endl;
*/}
int maxans=-1;
rep(i,0,sz-1)
maxans=max(maxans,dp[i]);
cout<<"Case "<<++kase<<": maximum height = "<<maxans<<endl;
}
return 0;
}

「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)的更多相关文章

  1. ACM-经典DP之Monkey and Banana——hdu1069

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  2. 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)

    题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...

  3. 「暑期训练」「基础DP」免费馅饼(HDU-1176)

    题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...

  4. 「暑期训练」「基础DP」FATE(HDU-2159)

    题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种 ...

  5. 「暑期训练」「基础DP」 Piggy-Bank (HDU-1114)

    题意与分析 完全背包问题. 算法背包九讲里面都有提到过,我自己再说下对完全背包的理解. 为什么01背包中遍历状态从VV到00?考虑一下基本方程$dp[i][j]=max(dp[i-1][j-w[i]] ...

  6. 「暑期训练」「Brute Force」 Bitonix' Patrol (CFR134D1D)

    题意 有n" role="presentation">nn个站点,排成圆形,每站间距m" role="presentation"> ...

  7. 「暑期训练」「Brute Force」 Multiplication Table (CFR256D2D)

    题意 给定一矩阵M" role="presentation">MM,Mij=ij" role="presentation">Mi ...

  8. 「暑期训练」「Brute Force」 Optimal Point on a Line (Educational Codeforces Round 16, B)

    题意 You are given n points on a line with their coordinates $x_i$. Find the point x so the sum of dis ...

  9. 「暑期训练」「Brute Force」 Money Transfers (CFR353D2C)

    题目 分析 这个Rnd353真是神仙题层出不穷啊,大力脑筋急转弯- - 不过问题也在我思维江化上.思考任何一种算法都得有一个“锚点”,就是说最笨的方法怎么办.为什么要这么思考,因为这样思考最符合我们的 ...

随机推荐

  1. E: Unable to locate package

    E: Unable to locate package apt-get不能定位到包,有两种情况,一种是自己输入的包名字错误,确实找不到.另一种可能是执行sudo apt-get install之前更换 ...

  2. express框架开发笔记

    1.express项目修改不重启 $ supervisor node bin/www 让supervisor监听模板文件的改动 $ supervisor --extensions html,css,j ...

  3. logback.xml常用配置

    一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-acc ...

  4. Spring多个版本源码地址分享

    源码地址为:http://repo.spring.io/simple/libs-release-local/org/springframework/spring/,以供研究源码的朋友. 我看了好几本关 ...

  5. Android学习笔记_56_应用Tween动画 (渐变、缩放、位移、旋转)

    1.实现listview每个项先向右移动,再向左移动(回到原来位置) TranslateAnimation ta = new TranslateAnimation( Animation.RELATIV ...

  6. HTML5标签应用

    <!doctype html> <html> <head> <style> /* *{border:1px solid red;height:20px} ...

  7. GYM 101550 G.Game Rank(模拟)

    The gaming company Sandstorm is developing an online two player game. You have been asked to impleme ...

  8. js图片预览(一张图片预览)

    核心思想:无论是一张图片上传还是多图上传,首先我们都需要先获得图片对象. 栗子: <inuput type="file" id="myfile" onch ...

  9. SQL3120W 不能将xx的字段值转换成 INTEGER值

    一次用DB2 Load/Import导入数据时,报错,提示SQL3120W 不能将xx的字段值转换成 INTEGER值,但目标列不可为空.未装入该行. 目标表: CREATE TABLE TEST( ...

  10. springboot整合swagger笔记

    首先,在pom.xml中添加依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId> ...