/****************************************************************************************************
经典DP,LIS,最长上升子序列
****************************************************************************************************/
#include <iostream>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast<t>(s)
#define LEN(s) static_cast<int>( strlen((s)) )
#define SZ(s) static_cast<int>( (s).size() )
typedef double LF;
//typedef long long LL; //GNU C++
//typedef unsigned long long ULL;
typedef __int64 LL; //Visual C++ 2010
typedef unsigned __int64 ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;
typedef map<int, int>::iterator MI;
typedef vector<int>::iterator VI;
typedef list<int>::iterator LI;
typedef set<int>::iterator SI;
template <typename T>
T sqa(const T &x)
{
return x * x;
}
template <typename T>
T gcd(T a, T b)
{
if (!a || !b)
{
return max(a, b);
}
T t;
while (t = a % b)
{
a = b;
b = t;
}
return b;
}
template <typename T>
T ext_gcd(T a, T b, T &x, T &y)
{
if (!b)
{
x = 1;
y = 0;
return a;
}
T d = ext_gcd(b, a % b, x, y);
T t = x;
x = y;
y = t - a / b * y;
return d;
}
template <typename T>
T invmod(T a, T p)
{
LL inv, y;
ext_gcd(a, p, inv, y);
inv < 0 ? inv += p : 0;
return inv;
}
const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL; //15f
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);
#define ONLINE_JUDGE
const int MAXN = 504;
const int loop[][3] = {{0, 1, 2}, {0, 2, 1}, {2, 1, 0}};
int n, cube[MAXN][3];
int dp[MAXN];
struct Node
{
int x, y, z;
int s;
bool operator < (const Node &rhs) const
{
return x < rhs.x && y < rhs.y || x < rhs.y && y < rhs.x;
}
bool operator > (const Node &rhs) const
{
return x > rhs.x && y > rhs.y || x > rhs.y && y > rhs.x;
}
}node[MAXN], tmp[MAXN];
bool inline nodeCmp(const Node &na, const Node &nb)
{
return na.s < nb.s;
}
void ace()
{
int cas = 1;
int ncnt;
while (cin >> n, n)
{
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < 3; ++j)
{
cin >> cube[i][j];
}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < 3; ++j) //因为立方体是无限的,但是x,y相同的立方体只可能出现一次
{
int k = i * 3 + j;
node[k].x = cube[i][ loop[j][0] ];
node[k].y = cube[i][ loop[j][1] ];
node[k].z = cube[i][ loop[j][2] ];
node[k].s = node[k].x * node[k].y;
}
}
n *= 3;
sort(node, node + n, nodeCmp); //对面积排序,尽量使小面积的在前面
ncnt = 0;
CLR(dp, 0);
dp[0] = node[0].z; //dp数组记录在当前第i个立方体放入后,以第i个立方体为底的高度
for (int i = 1; i < n; ++i)
{
int buf = 0;
for (int j = 0; j < i; ++j)
{
if (node[i] > node[j] && buf < dp[j]) //显然应该找之前最高的,因为只要保证node[i] > node[j]
{ //那么i之前的状态对于i来说是无关的
buf = dp[j];
}
}
dp[i] = buf + node[i].z;
}
int res = 0;
for (int i = 0; i < n; ++i)
{
res = max(res, dp[i]);
}
printf("Case %d: maximum height = %d\n", cas++, res);
}
return ;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif
ace();
return 0;
}相关推荐
2025年度工业级3D全景相机技术解析选型参考:国产品牌的技术突围与市场格局
本文分析了工业级3D相机在智慧城市和建筑数字化中的应用。通过对比国内外主流设备的技术参数和应用场景,发现国产品牌如众趣科技在性价比和本地化服务方面具有优势,尤其适合大型空间扫描项目;而国际品牌如Faro、Leica则在精度和可靠性上保持领先。建议根据项目需求(如测距范围、精度要求、预算)进行设备选型,综合考虑扫描效率、数据处理能力和系统兼容性。国产品牌已在国内大型基建项目中展现出竞争力,国际品牌则更适合高精度逆向工程和国际化项目。
2018 ACM-ICPC Syrian Collegiate Programming Contest
Problem H: Bugged System 思路来源**(https://blog.youkuaiyun.com/Mitsuha_/article/details/84455292)** Mr. Light is visiting a city with a “smart” metro system. Or so it seems … There are exactly n stations in a ...
2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛A题 农业灌溉系统优化
该摘要探讨了农业灌溉系统优化面临的复杂挑战,涉及智能灌溉技术的应用与资源配置问题。研究聚焦于一个1公顷的方形农场案例,该农场种植三种作物并面临动态环境条件(土壤类型、气象变化)。系统优化需平衡河流引水(非线性成本函数:C=50L^1.2+0.1Q^1.5)与储水罐灌溉(成本5元/升容积)两种方案,同时满足喷灌技术约束(喷头间距≥15米,覆盖半径15米)。关键矛盾体现在"平河旱储"的水资源调配策略与多作物需水量差异之间的协调,需通过传感器数据实时调整灌溉方案以实现效率最大化。(149字)
HDU - 1069 DP
HDU - 1069 DP Monkey and Banana 题目大意: 给你n种长方体,每种立方体都有个长宽高,每种立方体有无数个,让你选择任意立方体堆起来,要求上面的长和宽都严格小于下面的长和宽,问你最高能堆多高。 数据范围: 0<n≤300<n≤30,多组输入到n为...
计量经济学(因果关系探究-空间双重差分模型: 破解空间溢出效应的因果分析工具)
本文介绍了传统双重差分(DID)模型及其局限性,重点阐述了空间DID模型的必要性。传统DID通过组间差分分离干预效应,但无法处理空间溢出效应。空间DID模型引入空间计量方法,包括三种类型:空间自回归模型(SDID-SAR)捕捉因变量溢出,空间误差模型(SDID-SEM)处理残差相关性,空间杜宾模型(SDID-SDM)同时考虑因变量和自变量的空间滞后。模型选择需结合空间相关性检验,适用于环境政策、房地产限购等存在空间交互效应的研究场景。
要理解成本中心与利润中心的根本区别与适用场景,需从 “责任范围、考核核心、管理目标” 三个核心维度切入,同时明确二者在企业管理体系中的联动关系
摘要: 成本中心与利润核心区别在于责任范围、考核目标和管理权限。成本中心仅对成本负责(如生产、行政部门),考核成本控制能力;利润中心需同时管控成本与收入(如独立产品线、区域分公司),以利润为核心指标。选择标准取决于单元是否拥有收入决策权:无收入权的支持/执行部门设为成本中心,能独立经营、核算盈亏的单元设为利润中心。二者协同运作,成本中心为利润中心提供基础支持,利润中心的需求动态影响成本中心资源配置,共同实现企业整体目标。划分本质是确保考核指标与责任范围匹配,避免管理失效。
HDU1069 Monkey and Banana (DP)
HDU1069 Monkey and Banana (DP) HDU1069 Monkey and Banana DP 题意 思路 AC代码 原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意 有n个小块,每个块能摆成6种方案,每个小块提供无数个,下一层的长宽都必须严格大于上一层的长与宽。问最高能够叠多高。 ...
使用 PLS 回归进行近红外光谱的异常值检测
在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。
HDU1069-Monkey and Banana 【DP】
题目地址:https://cn.vjudge.net/problem/HDU-1069 看了一下这个DP教程,受到启发来做这题,一开始solve函数是这么写的 int solve() { getpre(); memset(dp,0,sizeof(dp)); dp[0][0] = 0; dp[0][1] = bl[0].c; for(int i=1;i&...
机器学习kaggle报告-Facial Keypoints Detection【完整解题过程+代码】
在处理面部关键点检测任务时,首先需要将存储在 CSV 文件中的图像数据转换为可以显示和分析的图像。数据集中每个图像是以一个一维数组的形式存储,其中包含了图像的所有像素值。为了将这些数据转化为实际的图像,我们需要按照一定的规则将这些像素值重新排列为一个二维矩阵(即图像的行列)。下面是一个案例,展示了如何将数据集中的图像数据转化为图片。转化过程读取CSV文件:首先,我们需要读取包含图像数据的 CSV 文件,通常该文件包含多张图像的像素值。每一行表示一张图像,并且包含图像的像素值列表。提取图像数据。
c++ pcl点云处理(2025 长期更新)
目录1.常用的点云文件2.认识点云的文件格式3.点云的数据结构4.输入输出(IO)5.KD树6.Oc树(八叉树)7.点云可视化8.点云滤波9.点云拟合分割10.点云与图像11.特征点与特征描述及提取12.点云配准13.点云曲面重建
【HDU 1069 Monkey and Banana】 排序+DP
HDU1069 题意就是一个小猴子有n种不同的长方体,每种有无数个,小猴子想把长方体垒到最高,要求上面的长方体的下表面严格小于下面的长方体的上表面, 根据题意我们知道一个长方体最多有六种可利用状态,我们按照长度为第一关键字,宽度为第二关键字排序,这样就保证了合法的拜访状态一定是按照这个顺序进行的,我们就可以n^2枚举转移了。 这一类DP有一个特点,先排序保证最优状态一定是按照这个顺序进...
学Simulink--进阶电机控制场景实例:基于Simulink的异步电机定子磁链定向控制(SFOC)仿真
本文详细介绍了基于Simulink的异步电机定子磁链定向控制(SFOC)仿真实现方法。主要内容包括:1) SFOC原理分析,突出其对转子参数不敏感的优势;2) 工业风机驱动系统的完整建模流程,涵盖主电路搭建、坐标变换、磁链观测器设计等关键步骤;3) 核心模块代码实现,包括电压模型磁链观测器和双闭环PI控制器;4) 仿真结果验证了SFOC在转速响应(0.2s)、转矩恢复(0.15s)和参数鲁棒性(转子电阻变化50%时转速波动<2%)方面的优异性能。本文为工程师提供了实用的SFOC系统开发指南,特别适用于
HDU 1069 Monkey and Banana(dp)
题目链接:【HDU 1069】 有n(n 一种盒子一共有6种叠加的方式,长宽分别为xy、yx、xz、zx、yz、zy 最多只需要6*n个盒子叠加起来,将这6*n个盒子按照长宽从小到大排序,然后简单dp一下就能得到答案 #include #include #include #include #include using namespace std; int len, dp[200]
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
HDU1069(DP)
HDU1069(DP) 这道题较为简单,有了前面DP的基础后,拿到这道题,怎么想呢?我现在理解DP问题就是找到一个方法,能把总问题由上到下分解,有点类似学校安排迎新晚会,任务出来了,然后老师交给学生会主席,学生会主席把任务分解成一个个小任务,安排给各个部门,各个部门的部长再细分成更小的任务给部员,到部员的时候任务就变得可实现了,就可以完成,然后把结果反馈给部长,部长再反馈给主席,而DP的重点就是...
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
HDU 1069 dp??
http://acm.hdu.edu.cn/showproblem.php?pid=1069题意就是 给你n种箱子,每种箱子的长宽高都给你,但是呢,每个箱子有无限个,你现在要把这些箱子叠起来,满足下面的箱子的长宽大于上面的箱子(严格),问你最大叠加高度思路: 我们用结构体存所有情况的箱子,之后按照(长小的放前面的原则sort)之后求最大递增子序列来求高度即可。dp[i] 表示 以 i 为结尾的箱子
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
hdu - 1069 DP
题目链接:https://cn.vjudge.net/problem/HDU-1069 题意:有n种砖,每种砖有长宽高三个属性,每种砖有无限个,且砖可以旋转(即每种砖的长宽高可以相互对调),按照上面的砖的长与宽严格小于下面的砖的长与宽的放置方法,求最大的砖块累加高度。 思路:将每种砖(a,b,c)分解为六种砖(a,b,c),(b,a,c),(c,b,a),(c,a,b),(a,c,b),(b,...
C - Monkey and Banana HDU - 1069——基础dp
Think: 1知识点:基础dp 2题意:询问n种箱子在满足 1>可以不同面为底 2>一个叠一个 3>叠的箱子中上面的箱子长和宽都严格小于下面的箱子的长和宽 4>无限个箱子 条件下能够叠的最高高度vjudge题目链接以下为Accepted代码——基础dp#include <cstdio> #include <cstring> #include <algorithm>using name
hdu 1069 Monkey and Banana DP
传送门:hdu 1069 Monkey and Banana题目大意一堆科学家研究猩猩的智商,给他M种长方体,每种N个。然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉。现在给你M种长方体,计算,最高能堆多高。要求位于上面的长方体的长要小于(注意不是小于于等于)下面长方体的长,上面长方体的宽小于下面长方体的宽。解题思路每一种长宽高不同的箱子来说,最多有六种摆放方式, 把这六种摆放的样式全部
HDU 1069 dp
HDU1069 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...
HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana 题解 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个。然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉。 现在给你M种长方体,计算,最高能堆多高。要求位于上面的长方体的长要大于(注意不是大于等于)下面长方体的长,上面长方体的宽大于下面长方体的宽。 输入输出 开始一个数n,表示有多少种木块,木块...
hdu acm 1069
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1069 这一题够折磨人,这一题难度在dp中只是1难度值,害惨我了,不过也学到了不少东西 #include <iostream>#include "algorithm"using namespace std; struct blocks{int x,y,z;}jm[3*31]; ...
hdu 1069 dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 #include #include #include #include #include #define INF 99999999 #define maxn 205 #define LL long long using namespace std; struct node { int l,w
[线性dp] hdu1069
题目 有多个立方体长宽高为x,y,z,可以重复使用,用来叠高高。但是每次叠的下面一个必须严格大于上面一个。求能堆到的最高的高度 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 思路 固定两条边,第三条边就是加上的高。所以一个立方体对应有六种摆放方式,把所有的摆放方式保存起来,按从大到小sort一遍。每次最高的值就是要找它下面的立方体最高的值加上它本身 代码 #include<cstdio> #include<cstring> #
hdu1069线性dp
/* dp[i]:取第i个方块时最多可以累多高 */ #include<bits/stdc++.h> using namespace std; struct node{ int x,y,z; bool operator<(const node & a)const { if(x==a.x)return y>a.y;...
dp打开思路3:HDU1069 POJ3616 POJ1088
HDU 1069 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意:把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都比下面长方体的长 和宽短;求这些长方体能叠加的最高的高度.(其中(3,2,1)可以摆放成(3,1,2)、(2,1,3)等). 思路:其实就是求最长的单调递减序列。在长和宽的递减下,求最大能得出...
1074



被折叠的 条评论
为什么被折叠?



