
Codeforces Round #401 (Div. 2) E. Hanoi Factory(单调栈+思维)
读取n个物品的数据。 将物品按照bi从大到小排序。 初始化一个栈来维护物品的堆叠顺序。 遍历每个物品,处理栈中的物品,弹出不符合条件的物品,并更新当前总和和最大高度。 将当前物品压入栈,更新当前总和和最大高度。 最后输出最大高度。
发布日期:2021-05-08 15:18:24
浏览次数:30
分类:精选文章
本文共 671 字,大约阅读时间需要 2 分钟。
今天遇到了一个有趣的问题,需要找出n个物品叠起来的最大高度。每个物品都有三个属性ai、bi、hi(高度),当i和j满足aj < bi ≤ bj时,i物品可以放到j物品上面。求叠起来的最大高度。
这个问题看起来有点复杂,但实际上是一个傻逼题。我们可以通过贪心算法和栈的数据结构来解决它。一开始我想复杂了,后来发现其实并不难。
首先,我们将物品按照bi从大到小排序。当处理一个物品i时,如果它的bi比栈顶物品j的aj小,那么它就不能放在j物品上面。这时候,我们需要将栈顶的物品弹出栈,直到找到一个满足aj < bi的物品j。弹出物品j时,我们需要计算弹出的j物品的hi,并将其从当前总和中减去,同时更新最大高度。
当处理完弹出物品后,如果栈顶的物品aj < bi,那么我们可以将物品i放到栈顶的物品j上面。此时,我们需要将物品i的hi加到当前总和中,并更新最大高度。
通过这种方法,我们可以保证每次叠加的物品都是最优的,从而得到叠起来的最大高度。
以下是具体实现步骤:
在实现过程中,我们需要注意以下几点:
- 使用长长型变量来存储高度,避免溢出。
- 在弹出物品时,需要及时更新当前总和,并记录最大高度。
- 栈的操作需要高效处理,确保时间复杂度为O(n)。
通过上述步骤,我们可以高效地解决这个问题,得到叠起来的最大高度。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月14日 16时49分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信小程序wx.previewImage实现图片预览
2023-01-23
数据分析与处理方法
2023-01-23
如何通过 WebSockets 实现 Python 和 JavaScript 的实时通信
2023-01-23
程序员的幽默10
2023-01-23
分享下自己总结的Git常用命令
2023-01-23
AIGC在量子计算研究中的应用:算法优化提示词
2023-01-23
三种引流方法&案例分析
2023-01-23
打开有惊喜
2023-01-23
AIGC在个性化医疗方案生成中的应用与挑战
2023-01-23
AUTOSAR_SWS_CANDriver4
2023-01-23
Spring高手系列2
2023-01-23
撕名牌游戏规则
2023-01-23
程序员的幽默8
2023-01-23
Android内存优化指南:从数据结构到5R法则的全面策略
2023-01-23
现代前端开发框架对比:React、Vue 和 Svelte 的选择指南
2023-01-23
跑男策划书
2023-01-23
智能电商小程序代码开发:打造全网热销购物体验
2023-01-23
程序员的幽默9
2023-01-23
计算机网络判断题二
2023-01-23
程序员都看不懂的代码
2023-01-23