「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)
题意与分析
给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度。
表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次。然后就是对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)的更多相关文章
- ACM-经典DP之Monkey and Banana——hdu1069
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)
题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...
- 「暑期训练」「基础DP」免费馅饼(HDU-1176)
题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...
- 「暑期训练」「基础DP」FATE(HDU-2159)
题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种 ...
- 「暑期训练」「基础DP」 Piggy-Bank (HDU-1114)
题意与分析 完全背包问题. 算法背包九讲里面都有提到过,我自己再说下对完全背包的理解. 为什么01背包中遍历状态从VV到00?考虑一下基本方程$dp[i][j]=max(dp[i-1][j-w[i]] ...
- 「暑期训练」「Brute Force」 Bitonix' Patrol (CFR134D1D)
题意 有n" role="presentation">nn个站点,排成圆形,每站间距m" role="presentation"> ...
- 「暑期训练」「Brute Force」 Multiplication Table (CFR256D2D)
题意 给定一矩阵M" role="presentation">MM,Mij=ij" role="presentation">Mi ...
- 「暑期训练」「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 ...
- 「暑期训练」「Brute Force」 Money Transfers (CFR353D2C)
题目 分析 这个Rnd353真是神仙题层出不穷啊,大力脑筋急转弯- - 不过问题也在我思维江化上.思考任何一种算法都得有一个“锚点”,就是说最笨的方法怎么办.为什么要这么思考,因为这样思考最符合我们的 ...
随机推荐
- 三、详述 IntelliJ IDEA 的使用界面
是否还记得在博文“IntelliJ IDEA 安装目录的核心文件讲解”中,这张充满神秘色彩的图片呢?进入她,让咱们一起感受她的魅力吧! 如上图所示,打开 IntelliJ IDEA 后,首先迎接咱们的 ...
- js函数在frame中的相互的调用
框架编程概述一个HTML页面可以有一个或多个子框架,这些子框架以<iframe>来标记,用来显示一个独立的HTML页面.这里所讲的框架编程包括框架的自我控制以及框架之间的互相访问,例如从一 ...
- struts2 实现文件下载方法汇总
http://pengranxiang.iteye.com/blog/259401 一.通过struts2提供的下载机制下载文件: 项目名为 struts2hello ,所使用的开发环境是MyEcli ...
- java面向对象编程思想的理解
1.我们总说java是一门面向对象编程的语言,那什么是面向对象呢? 我是这样理解的,对象是事物存在的实体,如,猪.狗,花早等都是对象,对象由两部分组成.面向对象编程的三大特点:继承,多态,类是封装对象 ...
- Ajax提交乱码
1. 页面码 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g ...
- c++ vector二维数组常见写法
vector<vector <int> > array(3);//定义了行数为3列数不定的二维数组 array.size()//返回二维数组的行数 array[0].size( ...
- 通过xshell在linux上安装solr4.10.3
通过xshell在linux上安装solr4.10.3 0)下载linux下的安装包 1)通过xftp6上传到linux上 3)在xshell下依次执行 解压命令:tar xvfz solr.tgz( ...
- Co. - Microsoft - Windows - 快捷键
[F1-F12]键 [Win]键 Windows键就是电脑键盘上是Windows图标的键,一般在Ctrl键和Alt键之间.搜索看整个键盘你会发现键盘上有两个Windows键,主要是左右手设计方便按各种 ...
- 'sessionFactory' or 'hibernateTemplate' is required
网上都是说在dao中未注入 sessionFactory,然而我有 于是排除 @Autowired public FlightDaoImpl(@Qualifier(value = "ses ...
- vuex重置所有state(可定制)
在正式场景中我们经常遇到一个问题,就是登出页面或其他操作的时候,我们需要重置所有的vuex,让其变为初始状态,那么,就涉及到了多种方法:1.页面刷新: window.location.reload() ...