1 条题解
-
0
小奇探险宝箱最大价值问题题解
一、题目核心分析
本题是带约束的动态规划优化问题,核心目标是在满足“任意长度为的连续宝箱中必取一个”的前提下,最大化按顺序取宝箱的总价值。价值计算的关键特性是“体力指数衰减”——初始体力为,每取一个宝箱后体力变为原来的倍(),第次取的宝箱贡献为。
关键矛盾与破局点:
- 约束转化:若取第个宝箱,上一个取的宝箱必须在区间内(否则长度超过,违反约束)。
- 体力衰减的关联性:取宝箱后,体力为(为取时的次数),取时的贡献为,总价值为“取的总价值 + ”。
- 数据规模:,普通动态规划超时,需通过斜率优化+单调队列+二分查找将时间复杂度降至。
二、动态规划设计与转移方程
1. 状态定义
设:
- :取第个宝箱时的最大总价值;
- :取第个宝箱后的体力(即下一次取宝箱时的体力);
- 虚拟节点:代表“未取任何宝箱”的初始状态,(总价值为),(初始体力为)。
2. 转移方程推导
若第个宝箱的上一个取的宝箱为(),则:
- 取的贡献为“取后的体力 × ”,即;
- 取后的总价值为;
- 取后的体力为(体力乘衰减)。
因此,核心转移方程为:
$$dp[i] = \max_{j \in [\max(0, i-M), i-1]} \left( dp[j] + a[i] \times power[j] \right) $$$$power[i] = power[j_{\text{opt}}] \times k \quad (j_{\text{opt}}是使dp[i]最大的j) $$3. 样例验证(核心推导正确性)
样例输入:
- 处理(窗口):仅可选,,;
- 处理(窗口):比较
- 1
信息
- ID
- 4222
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者