当前位置: 首页 > 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.zskr.cn/news/1380387.html

相关文章:

  • 终极免费音乐解密工具:打破平台枷锁,重获音乐自由
  • 如何用YDFID-1数据集快速构建纺织缺陷检测模型:完整指南
  • 别只盯着POST过滤!用Wireshark分析‘菜刀’流量时,这3个隐藏信息点更关键
  • 长期使用感受,Taotoken的API服务稳定性与低延迟体验记录
  • 6. BERT 系列
  • 专业级视频AI放大实战:5种超分辨率方案深度解析
  • Vue2-Verify:Vue.js验证码组件的终极完整指南
  • Docker 部署 MongoDB:从零搭建到生产环境配置详解
  • 2026学生党平价控油蓬松洗发水权威推荐榜 - 品牌评测官
  • 2026最新免费去图片水印保姆级教程:这4款免费一键去水印App,小白一看就会
  • Performance-Fish:让《环世界》后期帧率飙升400%的终极性能优化方案
  • 实战指南:用Python构建自动连连看系统的完整解决方案
  • 2026年5月亨得利官方售后网点实地考察与权威评测报告(含新增与迁址门店) - 亨得利钟表维修中心
  • Windows安卓应用安装新方案:APK安装器如何实现原生级体验?
  • Arduino与DS18B20数字温度计制作:从单总线原理到多点测温实践
  • 鸿蒙PC:Qt适配OpenHarmony实战【人名录】:单机联系人卡片,不读系统通讯录也能演示详情联动
  • 3步掌握开源Verilog仿真:从概念到实战的完整思维重塑
  • 微信投票怎么发起?海投票发起投票实操教程 - 资讯纵览
  • OpenCore Legacy Patcher完整指南:如何让老旧Mac重获新生运行最新macOS
  • 如何在ComfyUI中实现10倍效率的图像智能标签提取?
  • 中小型企业集成AI能力时借助Taotoken实现统一API管理与成本控制
  • phpMyAdmin 4.8.1文件包含漏洞CVE-2018-12613实战解析
  • 收藏干货|2026年程序员转型大模型指南,8个高薪岗位小白也能入局
  • 语音AI落地最后一公里卡点,PlayAI质量波动真相:采样率适配缺陷、韵律断层、情感衰减三大隐性陷阱
  • 太阳能供电PM2.5监测仪:从传感器选型到云端上传的完整物联网实践
  • Vue2-Verify:让前端验证码实现变得如此简单的完整指南
  • 通过TaotokenCLI工具一键配置开发环境与写入各工具配置教程
  • Windows 11终极清理优化指南:用Win11Debloat让你的系统焕然一新
  • 被导师夸到离谱?paperxie 毕业论文 AI 写作,把 “熬大夜” 直接变 “开倍速”
  • 5分钟实现Honey Select 2完整本地化:一站式游戏体验增强方案