给你n砖,有三个长宽高。每一个无限制的访问。叠加在一个条件的长度和宽度必须严格格长度和宽度大于下面的一个,叠加求最大高度。

思维:

每块砖终于放置在根据本方法可以把六种,然后,对于长度和宽度排序。这是LIS的变化的问题

#include<iostream>
#include<cstdio>
#include<list>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<cmath>
#include<memory.h>
#include<set>
#include<cctype> #define ll long long #define LL __int64 #define eps 1e-8 #define inf 0xfffffff //const LL INF = 1LL<<61; using namespace std; //vector<pair<int,int> > G;
//typedef pair<int,int > P;
//vector<pair<int,int> > ::iterator iter;
//
//map<ll,int >mp;
//map<ll,int >::iterator p; int box[500][3];
int dp[1000]; int cnt; typedef struct Node {
int x,y,z;
}; Node node[500]; void init() {
memset(box,0,sizeof(box));
memset(dp,0,sizeof(dp));
cnt = 0;
} /*void cal(int x,int y,int z) {
box[cnt][0] = x,box[cnt][1] = y,box[cnt++][2] = z;
box[cnt][0] = y,box[cnt][1] = x,box[cnt++][2] = z;
box[cnt][0] = y,box[cnt][1] = z,box[cnt++][2] = x;
box[cnt][0] = z,box[cnt][1] = y,box[cnt++][2] = x;
box[cnt][0] = x,box[cnt][1] = z,box[cnt++][2] = y;
box[cnt][0] = z,box[cnt][1] = x,box[cnt++][2] = y;
}*/ void cal(int x,int y,int z) {
node[cnt].x = x,node[cnt].y = y,node[cnt++].z = z;
node[cnt].x = y,node[cnt].y = x,node[cnt++].z = z;
node[cnt].x = y,node[cnt].y = z,node[cnt++].z = x;
node[cnt].x = z,node[cnt].y = y,node[cnt++].z = x;
node[cnt].x = x,node[cnt].y = z,node[cnt++].z = y;
node[cnt].x = z,node[cnt].y = x,node[cnt++].z = y;
} bool cmp(Node x,Node y) {
if(x.x == y.x) {
if(x.y == y.y)return x.z < y.z;
return x.y < y.y;
}
return x.x < y.x;
} int main() {
int n;
int Case = 0;
while(scanf("%d",&n),n) {
init();
for(int i=0;i<n;i++) {
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
cal(x,y,z);
}
int ans = 0;
sort(node,node+cnt,cmp);
/*for(int i=0;i<cnt;i++) {
printf("%d %d %d**\n",node[i].x,node[i].y,node[i].z);
}*/
for(int i=0;i<cnt;i++)
dp[i] = node[i].z;
for(int i=0;i<cnt;i++) {
for(int j=1;j<i;j++) {
int a = node[j].x;
int b= node[i].x;
int c = node[j].y;
int d= node[i].y;
if(node[j].x < node[i].x && node[j].y < node[i].y) {
dp[i] = max(dp[j] + node[i].z,dp[i]);
}
}
if(ans < dp[i])
ans = dp[i];
}
printf("Case %d: maximum height = %d\n",++Case,ans);
}
return 0;
}

ZOJ1093 动态规划的更多相关文章

  1. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  2. 简单动态规划-LeetCode198

    题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...

  3. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  4. 动态规划之最长公共子序列(LCS)

    转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...

  5. C#动态规划查找两个字符串最大子串

     //动态规划查找两个字符串最大子串         public static string lcs(string word1, string word2)         {            ...

  6. C#递归、动态规划计算斐波那契数列

    //递归         public static long recurFib(int num)         {             if (num < 2)              ...

  7. 动态规划求最长公共子序列(Longest Common Subsequence, LCS)

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  8. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  9. POJ 1163 The Triangle(简单动态规划)

    http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

随机推荐

  1. java(样品集成框架spring、spring mvc、spring data jpa、hibernate)

    这是你自己的参考springside集成框架的开源项目.主要的整合spring.spring mvc.spring data jpa.hibernate几个框架,对于这些框架中仍然感觉更舒适sprin ...

  2. Delphi 中TWebBrowser的扩展控件TExWebBrowser

    主要扩展了3D界面.右键菜单.是否显示图片.是否支持JAVA等功能. 代码如下: unit ExtWebBrowser; interface uses Windows, SysUtils, Class ...

  3. Java Web Services (0) - Overview

    前言第1章 Web服务快速入门 1.1 Web服务杂项 1.2 Web服务有什么好处 1.3 Web服务和面向服务的架构 1.4 Web服务简史 1.4.1 从DCE/RPC到XML-RPC 1.4. ...

  4. 每天一个JavaScript实例-动态省份选择城市

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. spring中bean的设计模式

    默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...

  6. Delphi VMT的前世今生(研究一下D7的VMT表结构)

    主要是TObject那些虚函数,到底放在了哪里?

  7. ThinkPHP使用分组详细介绍(十七)

    原文:ThinkPHP使用分组详细介绍(十七) 使用分组(模块分组) *就是将多个项目合并到一个项目/应用去(就是Home.Admin) ---分组不分组看自己的建立项目习惯,个人习惯用根目录配置生成 ...

  8. [Android学习笔记]Activity

    每一个activity都表示一个屏幕,程序把activity呈现给用户,而在activity上实际看到的UI控件,都是View. 故把activity简单理解为view的容器. activity的状态 ...

  9. 表达式树动态拼接lambda

    动态拼接lambda表达式树   前言 最近在优化同事写的代码(我们的框架用的是dapperLambda),其中有一个这样很普通的场景——界面上提供了一些查询条件框供用户来进行过滤数据.由于dappe ...

  10. STL__queue_的应用

    转:http://hi.baidu.com/xiaotiandm/item/bda34511cf9e99098fbde41a 调用的时候要有头文件: #include<stdlib.h> ...