当前位置: 首页 > news >正文

题解:AcWing 4548 猴子和香蕉

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AcWing:4548. 猴子和香蕉 - AcWing题库

【题目描述】

研究员正在测试猴子的智商。

他们将一串香蕉放到很高的地方,并给猴子一些积木。

如果猴子足够聪明,它应该能够通过将一个积木放到另一个积木上的方式,不断向上堆叠积木,建成一座高塔,并爬上去取得香蕉。

研究员一共给猴子提供了n nn种不同类型的积木,每种积木的供应数量无限多。

在堆叠过程中,猴子可以随意摆弄积木,自由决定积木的哪个面作为底面,以及积木的具体摆放朝向。

在堆叠时满足的条件是:位于下面的积木的长和宽必须严格大于位于上面的积木的长和宽。

堆叠的积木高度当然是越高越好,请你计算最大可能高度。

【输入】

输入包含多组测试数据。

每组数据第一行包含整数n nn

接下来n nn行,每行包含三个整数x i , y i , z i x_i,y_i,z_ixi,yi,zi,表示一种积木的长宽高。

当输入n = 0 n=0n=0时,输入结束。

【输出】

每组数据输出一行结果,格式为Case i: maximum height = x,其中i ii为组别编号(从1 11开始),x xx为最大可能高度。

【输入样例】

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 5 5 6 6 6 7 7 7 5 31 41 59 26 53 58 97 93 23 84 62 64 33 83 27 0

【输出样例】

Case 1: maximum height = 40 Case 2: maximum height = 21 Case 3: maximum height = 28 Case 4: maximum height = 342

【算法标签】

#线性DP-一维

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=100;// 定义最大节点数intn;// 方块种类数量structNode{intL,W,H;// 方块的长、宽、高}a[N];// 方块数组intf[N];// DP数组,f[i]表示以第i个方块为顶时的最大高度// 比较函数:首先按L从大到小排序,L相同则按W从大到小排序boolcmp(Node x,Node y){if(x.L!=y.L)returnx.L>y.L;returnx.W>y.W;}// 添加方块函数:将长宽高信息存入方块结构体voidadd(inti,intl,intw,inth){a[i].L=l;a[i].W=w;a[i].H=h;}intmain(){intt=1;// 测试用例编号while(cin>>n,n)// 读入n,当n不为0时循环{for(inti=0;i<n;i++)// 处理每种原始方块{intl,w,h;cin>>l>>w>>h;// 读入原始方块的长宽高// 将每种方块转换为3种不同的放置方式add(3*i+1,max(l,w),min(l,w),h);// 以l,w为底,h为高add(3*i+2,max(l,h),min(l,h),w);// 以l,h为底,w为高add(3*i+3,max(w,h),min(w,h),l);// 以w,h为底,l为高}// 将所有方块按L从大到小排序,L相同则按W从大到小排序sort(a+1,a+n*3+1,cmp);f[1]=a[1].H;// 初始化DP数组,第一个方块的高度intans=f[1];// 初始化答案for(inti=2;i<=3*n;i++)// 遍历所有方块{intmaxn=0;// 记录可放置在当前方块下方的最大高度for(intj=1;j<i;j++)// 检查所有之前的方块{// 如果方块j的长和宽都大于方块i的长和宽,则方块j可以放在方块i下方if(a[j].L>a[i].L&&a[j].W>a[i].W){maxn=max(maxn,f[j]);// 更新最大高度}}f[i]=maxn+a[i].H;// 当前方块的高度加上下方最大高度ans=max(ans,f[i]);// 更新全局最大高度}cout<<"Case "<<t<<": maximum height = "<<ans<<endl;// 输出结果t++;// 测试用例编号加1}return0;}

【运行结果】

1 10 20 30 Case 1: maximum height = 40 2 6 8 10 5 5 5 7 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 Case 3: maximum height = 28 5 31 41 59 26 53 58 97 93 23 84 62 64 33 83 27 Case 4: maximum height = 342 0
http://www.jsqmd.com/news/884309/

相关文章:

  • 5. 迁移学习
  • 机器学习加速PIC仿真:MLP与CNN在等离子体初始条件预测中的应用
  • 长期使用感受,Taotoken的API服务稳定性与低延迟体验记录
  • 终极高效音乐歌词提取方案:跨平台批量下载与格式转换全解析
  • 从API密钥管理界面看Taotoken在安全与权限管控上的设计
  • 基于Python的规则引擎:从零构建症状筛查聊天机器人
  • 如何永久保存微信聊天记录:WeChatMsg完整备份方案指南
  • NVIDIA H100 GPU架构与vLLM框架优化实践
  • 3个实用技巧教你用kepano-obsidian模板打造高效个人知识管理系统
  • 登录界面存在问题-------验证码不会自动更新
  • 2026学生党平价控油蓬松洗发水权威推荐榜 - 品牌评测官
  • 【深度解读】中央定调!“人工智能+”全面实施,开发者如何抓住AI产业化与产业AI化的时代红利?
  • 5分钟实现Honey Select 2完整本地化:一站式游戏体验增强方案
  • 机器学习回归模型在政策冲击下股市预测的实战对比:线性回归、SVR、随机森林与kNN
  • 鸿蒙PC:Qt适配OpenHarmony实战【人名录】:单机联系人卡片,不读系统通讯录也能演示详情联动
  • 你的差异基因结果可靠吗?用R包MetaVolcanoR做个Meta分析来验证和增强发现
  • 从所有权机制到产业重构:Rust语言的十年演进与生态全景
  • 2026年5月亨得利官方售后网点实地考察与权威评测报告(含新增与迁址门店) - 亨得利钟表维修中心
  • Windows流媒体服务器SRS终极部署指南:5分钟搭建高性能视频传输系统
  • Windows安卓应用安装新方案:APK安装器如何实现原生级体验?
  • Taotoken 在多模型聚合场景下的路由与容灾机制解析
  • FM3450C 3 节串联用锂电池保护 IC
  • 最近发现一个神奇网站!用50行代码实现微信自动回复机器人
  • 什么是GEO全栈获客服务
  • 数据流降采样技术:Downstream库的核心原理与应用
  • 2026年护照照片手机制作详细指南:规格要求+五大方法一步步教你
  • 微信投票怎么发起?海投票发起投票实操教程 - 资讯纵览
  • 新手如何从零开始在 Taotoken 平台获取并管理首个 API Key
  • 3种浏览器解密技术:如何在Web端打破音乐平台格式壁垒?
  • 2026年4月喷淋塔公司推荐,RTO/水处理设备/污水一体化设备/活性炭箱/生物虑床/冷却塔,喷淋塔公司哪家好有哪些 - 品牌推荐师