给你两个长度为 n
的整数数组 value
和 limit
。
初始时,所有元素都是 非活跃 的。你可以按任意顺序激活它们。
i
,当前 活跃元素的数量必须 严格小于 limit[i]
。i
时,它的 value[i]
会被加到 总和 中(即所有进行过激活操作的元素 value[i]
之和)。x
,那么 所有 满足 limit[j] <= x
的元素 j
都会永久变为非活跃状态,即使它们已经处于活跃状态。返回通过最优选择激活顺序可以获得的 最大总和 。
示例 1:
输入: value = [3,5,8], limit = [2,1,3]
输出: 16
解释:
一个最优的激活顺序是:
步骤 | 激活的 i |
value[i] |
激活 i 前的活跃数 |
激活 i 后的活跃数 |
变为非活跃的 j |
非活跃元素 | 总和 |
---|---|---|---|---|---|---|---|
1 | 1 | 5 | 0 | 1 | j = 1 因为 limit[1] = 1 |
[1] | 5 |
2 | 0 | 3 | 0 | 1 | - | [1] | 8 |
3 | 2 | 8 | 1 | 2 | j = 0 因为 limit[0] = 2 |
[1, 2] | 16 |
因此,可能的最大总和是 16。
示例 2:
输入: value = [4,2,6], limit = [1,1,1]
输出: 6
解释:
一个最优的激活顺序是:
步骤 | 激活的 i |
value[i] |
激活 i 前的活跃数 |
激活 i 后的活跃数 |
变为非活跃的 j |
非活跃元素 | 总和 |
---|---|---|---|---|---|---|---|
1 | 2 | 6 | 0 | 1 | j = 0, 1, 2 因为 limit[j] = 1 |
[0, 1, 2] | 6 |
因此,可能的最大总和是 6。
示例 3:
输入: value = [4,1,5,2], limit = [3,3,2,3]
输出: 12
解释:
一个最优的激活顺序是:
步骤 | 激活的 i |
value[i] |
激活 i 前的活跃数 |
激活 i 后的活跃数 |
变为非活跃的 j |
非活跃元素 | 总和 |
---|---|---|---|---|---|---|---|
1 | 2 | 5 | 0 | 1 | - | [ ] | 5 |
2 | 0 | 4 | 1 | 2 | j = 2 因为 limit[2] = 2 |
[2] | 9 |
3 | 1 | 1 | 1 | 2 | - | [2] | 10 |
4 | 3 | 2 | 2 | 3 | j = 0, 1, 3 因为 limit[j] = 3 |
[0, 1, 2, 3] | 12 |
因此,可能的最大总和是 12。
提示:
1 <= n == value.length == limit.length <= 105
1 <= value[i] <= 105
1 <= limit[i] <= n