[UVA437] The Tower of Babylon

UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索) 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形。 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b)来表示顶面即可。 但是因为长方体的长宽高可能会很大,所以如果我们直接用一个数组表示数值的话是存不下的,因此我们令开一个数组存下所有点的信息,用x表示每一个点的标号即可。至于如何表示高是谁(高实际上就是我们放置这个长方体时获得的权值)因为一共有三个边的长度,我们可以将他们标号为0,1,2,放到一个数组里,我们用k表示这个高的标号,我们每次找答案. 阅读详情

描述

UVA437

思路

每种长方体可重复使用, 而每种长方体有六种摆放方式,所以可以将每个可随机摆放长方体视为摆放方式固定的六个长方体。
对于与长方体的堆叠,考虑上下长方体的x, y , 所以可以将长方体按x降序排列。	然后就是动态规划问题.

题解

#include <algorithm>
#include <string>
#include <iostream>
#include <set>
#include <vector>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <stack>
int dp[200];
struct Rec {
	int a, b, c;
	Rec() = default;
	Rec(int a, int b, int c) : a(a), b(b), c(c) {}
	bool operator < (const Rec &rec) const
	{
		if (a < rec.a)
			return true;
		else if (a > rec.a)
			return false;
		else
		{
			if (b < rec.b)
				return true;
			else if (b > rec.b)
				return false;
			else
			{
				return c < rec.c;
			}
		}
	}
}rec[200];

int main()
{
	int cases = 0;
	int t;
	while (scanf("%d", &t), t)
	{
		cases++;
		int cnt = 0;
		for (int i = 0; i < t; i++)
		{
			int a, b, c;
			scanf("%d %d %d", &a, &b, &c);
			rec[cnt++] = Rec(a, b, c);
			rec[cnt++] = Rec(a, c, b);
			rec[cnt++] = Rec(b, a, c);
			rec[cnt++] = Rec(b, c, a);
			rec[cnt++] = Rec(c, a, b);
			rec[cnt++] = Rec(c, b, a);
		}
		std::sort(std::begin(rec), std::begin(rec) + cnt);
		for (int i = 0; i < cnt; i++)
			dp[i] = rec[i].c;
		for (int i = 1; i < cnt; i++)
			for (int j = 0; j < i; j++)
				if (rec[i].a > rec[j].a && rec[i].b > rec[j].b)
					dp[i] = std::max(dp[i], dp[j] + rec[i].c);
		printf("Case %d: maximum height = %d\n", t, *std::max_element(std::begin(dp), std::begin(dp) + cnt));
	}
	return 0;
}
Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤) 本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。 阅读详情

相关推荐

别只刷题了!我用834分经验告诉你,华为HCIP大数据考试(H13-723)这样准备更高效

本文分享了华为HCIP大数据认证(H13-723)834分通关的高效备考经验。通过分析考试动态、题库验证技巧和章节优先级策略,帮助考生超越单纯刷题,系统化掌握核心知识点。特别强调实时流处理和离线批处理等重点章节,提供黄金90分钟临场发挥策略,助力考生一次性通过考试。

weixin_38168786的博客 459

UVa 437 The Tower of Babylon

Uva 437

fuzekun的博客 379

OpenHarmony 5.1 RK3568 开发板烧录:从源码编译到镜像写入的 6 步实战

本文详细解析了OpenHarmony 5.1在RK3568开发板上的全链路开发流程,包括环境搭建、源码编译、镜像烧录等6个关键步骤。通过实战指南和避坑技巧,帮助开发者快速掌握OpenHarmony系统的烧录与定制能力,提升物联网设备开发效率。

weixin_33722405的博客 343

UVA437 巴比伦塔

题目链接:https://www.luogu.com.cn/problem/UVA437 题目:有n(n≤30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽。 intput: 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 ...

simao 329

从示波器波形看懂CAN/RS485/RS422:一个TVS管放错位置,通信全挂的教训

本文通过示波器波形分析,深入探讨了CAN/RS485/RS422通信系统中TVS管布局错误的故障诊断与解决方案。文章详细解析了错误布局导致的波形特征,如信号钳位、阻抗失配等,并提供了正确的保护电路设计方案和终端匹配技术,帮助工程师快速定位和解决通信故障。

weixin_30555515的博客 347

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 499

UVA 437 巴比伦塔(DAG上的动态规划)

红书上的动态规划专题 题意:有n种立方体,每种都有无穷多个,要求选一些立方体摞成一根尽量高的柱子,可以自行选一边当多高,使得每个立方体的底面长宽分别严格小于它下方的立方体的底面长宽 思路:各个立方体 “能否被摞”关系是一个典型的二元关系,二元关系可以用图来建模,如果b能摞在a上,a到b就有一条有边向,所以这就是一个DAG,所要求的便是DAG上的最长路径,因为任意一条边都可以当作高,所以

GYH0730的博客 589

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 222

UVA-437(带递归的dp)

The Tower of Babylon UVA - 437 问题描述: 输入输出说明: 思路: 带递归的dp ac code: #include<bits/stdc++.h> using namespace std; struct Node{ int v[4]; }a[40]; int n; int k=0; int d[100][100]; int dp(int i,int k){ int& ans=d[i][k]; if(ans!=-1)return ans; an

雪岩的博客 397

Qt软件开发: 开发MQTT客户端软件,模拟硬件登录各大主流MQTT平台完成通信

此软件是使用QT编写MQTT客户端(根据mqtt官方文档3.1.1,自己实现过程代码,没有使用其他库,稳定,方便移植),模拟硬件登录各大主流的MQTT物联网服务器,完成主题订阅、发布等操作,实现数据通信交互。 已经测试OneNET、阿里云IOT、华为云IOT、百度IOT、电信IOT、原子云IOT等等常用的物联网云平台,都可以正常实现数据通信,只要云平台支持标准MQTT协议都可以使用此软件进行登录测试。 特别是大家没有硬件,想测试与MQTT物联网云服务器通信的,此软件是非常的方便。使用简单,比官方的软件操作

1万+

HTML音乐爱心3D旋转相册完整源码

HTML音乐爱心3D旋转相册完整源码

LilyCoder的博客 1380

uva 437 - The Tower of Babylon(DAG最长路)

本文出自   http://blog.youkuaiyun.com/shuangde800 题目:点击打开链接 题目大意 有n个长宽高为x,y,z的砖头, 代码

D_Double's Journey 3847

产品路线图的三种模型(RICE/MoSCoW/Kano),教你如何对需求进行优先级排序

RICE/MoSCoW/Kano三种模型,教你如何对需求进行优先级排序。 也许你会让业务提供一份ROI,记得前不久参加过一场立项会评审,一位很有意思的小产品在会上讲不清楚ROI,评审们要求会后重新梳理,小产品表达不要为难业务方干一些他们不擅长的事了。这个看似笑话的经历,背后隐藏着价值判断已经流于形式。 也许你会要求业务方直接给出需求优先级列表,把任务分为P0到P5,这样的划分除了按需求本质的优先级还同时考虑了开发资源、开发难度等问题。毫不夸张地说,我曾经拿到一张全是P0级别的需求清单,如果一切任务都是高

wenyusuran的专栏 5544

uva 437 The Tower of Babylon

题意:有n个立方体,要堆成一个尽量高的主子,每个立方体上面放的立方体的长宽都严格小于下面,每个立方体有无限个 分析:我的做法是,每个立方体最多有6种状态,那么也就拥有6n个固定长宽高的立方体,那么这就是一个DAG上的最长路,6n个正方体,O(n^2)的算法, 很简单,详情见代码 #include<bits/stdc++.h> using namespace s...

weixin_30372371的博客 88

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

UVa 437 - The Tower of Babylon

/*UVa 437 - The Tower of Babylon * 矩形嵌套问题 DP + DAG + LIS * */ import java.util.Arrays; import java.util.Scanner; class Block { int x; int y; int z; public Block(int x, int y, int z) { this.

annie11640389的专栏 551

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

解题报告 之 UVA437 The Tower of Babylon

解题报告 之 UVA437 The Tower of Babylon Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of this tale have been forgotten. So now, in line with

JUST CODE 572

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

uva437 - The Tower of Babylon(DAG上的DP)

题目:uva437 - The Tower of Babylon(DAG上的DP) 题目大意:给你一些立方体,给出长宽高XYZ。现在希望你将这些立方题叠起来,使得最后的高度最大,并且这些立方体是可以无限次使用的,但是一个立方体要在另一个立方体的上面的话是需要满足这个立方体的底面是可以完全包含在下面的那个立方体的底面。 解题思路:其实这里的无限次使用没有什么用,因为一个立方体最多

3542

The Tower of Babylon(UVA437)

题目:UVA437 这题有点类似矩阵嵌套 思路:将每一个立方体都转换成三个矩形,而它的价值就是另一条边,这些矩形如果有长、宽都相等的,就选择价值大的,然后小的矩形嵌套在大的矩形里面,选择一个连续的并且价值最大 #include <stdio.h> #include <string.h> #include <algorithm> using namespace s...

多一些不为什么的坚持 431

UVa OJ 437 - The Tower of Babylon

UVa OJ 437 - The Tower of BabylonProblemThe babylonians had 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,

Yuuki_Dach's Blog 451

uva 437 The Tower of Babylon (DAG)

uva 437 The Tower of BabylonPerhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of this tale have been forgotten. So now, in line with the educational nature of this con

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 881

uva 437 The Tower of Babylon(DAG最长路)

题目连接:437 - The Tower of Babylon 题目大意:可以理解成有n种类型的长方体,现在给出每中长方体的长宽高, 然后要选取若干个长方体来玩堆积木(可以选取同种类型的长方体), 要尽量使得堆出来的塔越高, 堆积木的时候要求下面的积木长宽一定要分别大于上面的那个积木(这样同种积木也有可能叠加)。 解题思路:DAG最长路径, 因为下面一个的长方体的长宽要分别大于

不慌不忙、不急不躁 1692

UVA 437_The Tower of Babylon

题意: 一堆石头,给定长宽高,每种石头均可以使用无数次,问这堆石头可以叠放的最高高度,要求下面的石头的长和宽分别严格大于上面石头的长和宽。 分析: 采用DAG最长路算法,由于长宽较大,不能直接用于表示状态,因此采用d[i][x]表示以第i块石头为最高点,以其第x个边为高所能达到的最大高度,其中i为石头标号,x代表长/宽/高,然后根据长宽高要求构造DAG,最后...

An55511的博客 174

UVA437 The Tower of Babylon

UVA437 The Tower of Babylon 题目链接 动态规划 题目 有n(n≤30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽。 分析 题目中有两句话比较重要,一是每种立方体都有无穷多个,二是可以自行选择哪一条边作为高,所以当输入为n种立方体时,可供我们选择的立方体个数一共是3*n个,每输入一种立方体,对应的就有三种立方体供我们选择(分别以输入的三个数作为高)。 然后根据立方体之间能

polarday的博客 213

uva437 the tower of babylon

动态规划【记忆化搜索】

YHaX的博客 535

The Tower of Babylon UVA - 437

题意:有n(n &lt;= 30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子(可以自行选择那一条边作为高),使得每个立方体的底面长款分别严格小于它下方立方体的底面长宽。 思路:在任何时候,只有顶面的尺寸会影响到后续决策,因此可以用二元组(a,b)来表示“顶面尺寸为a*b这个状态”。因为每次增加一个立方体以后顶面的长和宽都会严格减小,所以这个图是DAG,可以套用DAG算法。 ...

沐妖的博客 249
上一篇: [HihoCoder 1175 拓扑排序·二]
下一篇: [hdu 4857] 逃生
Soinux
博客等级 码龄8年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值