背包问题 [二维偏序, 树状数组]

本文探讨了如何使用二维偏序排列和树状数组解决背包问题。首先,按照价值v和重量w从大到小排序所有物品,然后进行离散化坐标。通过树状数组维护y轴的前缀最大值max_cur。接着,按背包容量从大到小排序,并用一个指针t从左往右根据物品容量移动。更新过程中,取t和max_cur的最小值。这是一种有效的背包问题求解策略。
摘要由CSDN通过智能技术生成

背 包 问 题 背包问题


正 解 部 分 \color{red}{正解部分}

二维偏序问题,

将所 有点 按照 v v v 为第一关键字, w w w 为第二关键字 从大到小 排序,

从前往后扫, 离散化坐标, 使用 树状数组 维护 y y y前缀最大值, 记为 m a x _ c u r max\_cur max_cur

对于背包的限制, 将背包按容量 从大到小 排序, 维护一个指针从左往右根据物品的容量往右移动, 记为 t t t,

背包从容量大的开始选显然是最优的 .

min ⁡ ( t , m a x _ c u r ) \min(t, max\_cur) min(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值