1 条题解
-
0
题解
思路
用前缀和 在 时间求任意长度 段的和。令 表示在前 个元素中恰好选择 段的最大和。不可达状态初始化为负无穷,且 。
做法
对每个 、,有两种选择:
- 不选位置 ,沿用 ;
- 让一段恰好在 结束。该段为 ,此前的 段必须位于前 个位置,所以用 转移。
取两者最大值,答案为 。所有和与状态都必须使用 64 位整数。
正确性证明
对 与 归纳。任意前 个元素内恰好选择 段的最优方案中,位置 要么未被选择,此时方案完整地属于 ;要么被选择,此时包含它的最后一段只能是 ,其余 段完全位于前 个位置,最优值正是第二项转移。两类情况互斥且覆盖全部合法方案,因此取最大值后 正确。由归纳可知 是恰好选择 段的最大总和。
复杂度分析
时间复杂度 。每一层只依赖上一层,使用滚动数组后空间复杂度为 。
- 1
信息
- ID
- 1136
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者