{ "data": { "question": { "questionId": "3959", "questionFrontendId": "3645", "categoryTitle": "Algorithms", "boundTopicId": 3746534, "title": "Maximum Total from Optimal Activation Order", "titleSlug": "maximum-total-from-optimal-activation-order", "content": "
You are given two integer arrays value and limit, both of length n.
Initially, all elements are inactive. You may activate them in any order.
\n\ni, the number of currently active elements must be strictly less than limit[i].i, it adds value[i] to the total activation value (i.e., the sum of value[i] for all elements that have undergone activation operations).x, then all elements j with limit[j] <= x become permanently inactive, even if they are already active.Return the maximum total you can obtain by choosing the activation order optimally.
\n\n\n
Example 1:
\n\nInput: value = [3,5,8], limit = [2,1,3]
\n\nOutput: 16
\n\nExplanation:
\n\nOne optimal activation order is:
\n\n| Step | \n\t\t\tActivated i | \n\t\t\tvalue[i] | \n\t\t\tActive Before i | \n\t\t\tActive After i | \n\t\t\tBecomes Inactive j | \n\t\t\tInactive Elements | \n\t\t\tTotal | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t1 | \n\t\t\t5 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\tj = 1 as limit[1] = 1 | \n\t\t\t[1] | \n\t\t\t5 | \n\t\t
| 2 | \n\t\t\t0 | \n\t\t\t3 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\t- | \n\t\t\t[1] | \n\t\t\t8 | \n\t\t
| 3 | \n\t\t\t2 | \n\t\t\t8 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\tj = 0 as limit[0] = 2 | \n\t\t\t[0, 1] | \n\t\t\t16 | \n\t\t
Thus, the maximum possible total is 16.
\nExample 2:
\n\nInput: value = [4,2,6], limit = [1,1,1]
\n\nOutput: 6
\n\nExplanation:
\n\nOne optimal activation order is:
\n\n| Step | \n\t\t\tActivated i | \n\t\t\tvalue[i] | \n\t\t\tActive Before i | \n\t\t\tActive After i | \n\t\t\tBecomes Inactive j | \n\t\t\tInactive Elements | \n\t\t\tTotal | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t2 | \n\t\t\t6 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\tj = 0, 1, 2 as limit[j] = 1 | \n\t\t\t[0, 1, 2] | \n\t\t\t6 | \n\t\t
Thus, the maximum possible total is 6.
\nExample 3:
\n\nInput: value = [4,1,5,2], limit = [3,3,2,3]
\n\nOutput: 12
\n\nExplanation:
\n\nOne optimal activation order is:
\n\n| Step | \n\t\t\tActivated i | \n\t\t\tvalue[i] | \n\t\t\tActive Before i | \n\t\t\tActive After i | \n\t\t\tBecomes Inactive j | \n\t\t\tInactive Elements | \n\t\t\tTotal | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t2 | \n\t\t\t5 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\t- | \n\t\t\t[ ] | \n\t\t\t5 | \n\t\t
| 2 | \n\t\t\t0 | \n\t\t\t4 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\tj = 2 as limit[2] = 2 | \n\t\t\t[2] | \n\t\t\t9 | \n\t\t
| 3 | \n\t\t\t1 | \n\t\t\t1 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\t- | \n\t\t\t[2] | \n\t\t\t10 | \n\t\t
| 4 | \n\t\t\t3 | \n\t\t\t2 | \n\t\t\t2 | \n\t\t\t3 | \n\t\t\tj = 0, 1, 3 as limit[j] = 3 | \n\t\t\t[0, 1, 2, 3] | \n\t\t\t12 | \n\t\t
Thus, the maximum possible total is 12.
\n\n
Constraints:
\n\n1 <= n == value.length == limit.length <= 1051 <= value[i] <= 1051 <= limit[i] <= n给你两个长度为 n 的整数数组 value 和 limit。
初始时,所有元素都是 非活跃 的。你可以按任意顺序激活它们。
\n\ni,当前 活跃元素的数量必须 严格小于 limit[i]。i 时,它的 value[i] 会被加到 总和 中(即所有进行过激活操作的元素 value[i] 之和)。x,那么 所有 满足 limit[j] <= x 的元素 j 都会永久变为非活跃状态,即使它们已经处于活跃状态。返回通过最优选择激活顺序可以获得的 最大总和 。
\n\n\n\n
示例 1:
\n\n输入: value = [3,5,8], limit = [2,1,3]
\n\n输出: 16
\n\n解释:
\n\n一个最优的激活顺序是:
\n\n| 步骤 | \n\t\t\t激活的 i | \n\t\t\tvalue[i] | \n\t\t\t激活 i 前的活跃数 | \n\t\t\t激活 i 后的活跃数 | \n\t\t\t变为非活跃的 j | \n\t\t\t非活跃元素 | \n\t\t\t总和 | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t1 | \n\t\t\t5 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\tj = 1 因为 limit[1] = 1 | \n\t\t\t[1] | \n\t\t\t5 | \n\t\t
| 2 | \n\t\t\t0 | \n\t\t\t3 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\t- | \n\t\t\t[1] | \n\t\t\t8 | \n\t\t
| 3 | \n\t\t\t2 | \n\t\t\t8 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\tj = 0 因为 limit[0] = 2 | \n\t\t\t[0, 1] | \n\t\t\t16 | \n\t\t
因此,可能的最大总和是 16。
\n示例 2:
\n\n输入: value = [4,2,6], limit = [1,1,1]
\n\n输出: 6
\n\n解释:
\n\n一个最优的激活顺序是:
\n\n| 步骤 | \n\t\t\t激活的 i | \n\t\t\tvalue[i] | \n\t\t\t激活 i 前的活跃数 | \n\t\t\t激活 i 后的活跃数 | \n\t\t\t变为非活跃的 j | \n\t\t\t非活跃元素 | \n\t\t\t总和 | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t2 | \n\t\t\t6 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\tj = 0, 1, 2 因为 limit[j] = 1 | \n\t\t\t[0, 1, 2] | \n\t\t\t6 | \n\t\t
因此,可能的最大总和是 6。
\n示例 3:
\n\n输入: value = [4,1,5,2], limit = [3,3,2,3]
\n\n输出: 12
\n\n解释:
\n\n一个最优的激活顺序是:
\n\n| 步骤 | \n\t\t\t激活的 i | \n\t\t\tvalue[i] | \n\t\t\t激活 i 前的活跃数 | \n\t\t\t激活 i 后的活跃数 | \n\t\t\t变为非活跃的 j | \n\t\t\t非活跃元素 | \n\t\t\t总和 | \n\t\t
|---|---|---|---|---|---|---|---|
| 1 | \n\t\t\t2 | \n\t\t\t5 | \n\t\t\t0 | \n\t\t\t1 | \n\t\t\t- | \n\t\t\t[ ] | \n\t\t\t5 | \n\t\t
| 2 | \n\t\t\t0 | \n\t\t\t4 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\tj = 2 因为 limit[2] = 2 | \n\t\t\t[2] | \n\t\t\t9 | \n\t\t
| 3 | \n\t\t\t1 | \n\t\t\t1 | \n\t\t\t1 | \n\t\t\t2 | \n\t\t\t- | \n\t\t\t[2] | \n\t\t\t10 | \n\t\t
| 4 | \n\t\t\t3 | \n\t\t\t2 | \n\t\t\t2 | \n\t\t\t3 | \n\t\t\tj = 0, 1, 3 因为 limit[j] = 3 | \n\t\t\t[0, 1, 2, 3] | \n\t\t\t12 | \n\t\t
因此,可能的最大总和是 12。
\n\n\n
提示:
\n\n1 <= n == value.length == limit.length <= 1051 <= value[i] <= 1051 <= limit[i] <= nlimit values, as decisions for each limit are independent.",
"For a group with limit = j and m items, its contribution is the sum of the top min(j, m) values.",
"To extract each group's top values, use a min-heap of capacity j: push each value[i], and whenever the heap size exceeds j, pop the smallest.",
"After processing a group's heap, sum its elements and add to the overall total; repeat for all groups in any order."
],
"solution": null,
"status": null,
"sampleTestCase": "[3,5,8]\n[2,1,3]",
"metaData": "{\n \"name\": \"maxTotal\",\n \"params\": [\n {\n \"name\": \"value\",\n \"type\": \"integer[]\"\n },\n {\n \"type\": \"integer[]\",\n \"name\": \"limit\"\n }\n ],\n \"return\": {\n \"type\": \"long\"\n }\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"\\u7248\\u672c\\uff1a \\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 \\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1aarray<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u6ce8\\u610f Python 2.7 \\u5df2\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\" \\u7248\\u672c\\uff1a \\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 \\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n 1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n 2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n 3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n C# 13<\\/a> \\u8fd0\\u884c\\u5728 .NET 9 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\" \\u7248\\u672c\\uff1a \\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n \\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js <\\/a>\\u5e93\\u6240\\u63d0\\u4f9b\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\" \\u4f7f\\u7528 \\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\" \\u7248\\u672c\\uff1a \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 swift-algorithms 1.2.0<\\/a>\\uff0cswift-collections 1.1.4<\\/a> \\u548c swift-numerics 1.0.2<\\/a><\\/p>\\r\\n\\r\\n \\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\" \\u7248\\u672c\\uff1a \\u652f\\u6301 https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u548c https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods\\/v2@v2.0.0-alpha<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\" \\u7248\\u672c\\uff1a \\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982array<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n \\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\" \\u7248\\u672c\\uff1a \\u7248\\u672c\\uff1a \\u7248\\u672c\\uff1a \\u652f\\u6301 crates.io \\u7684 rand<\\/a>\\u3001regex<\\/a> \\u548c itertools<\\/a><\\/p>\"],\"php\":[\"PHP\",\" With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\" TypeScript 5.7.3<\\/p>\\r\\n\\r\\n Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2024<\\/p>\\r\\n\\r\\n lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n \\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js <\\/a>\\u5e93\\u6240\\u63d0\\u4f9b\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u3002<\\/p>\"],\"racket\":[\"Racket\",\" Racket CS<\\/a> v8.15<\\/p>\\r\\n\\r\\n \\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n \\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 26\"],\"elixir\":[\"Elixir\",\"Elixir 1.17 with Erlang\\/OTP 26\"],\"dart\":[\"Dart\",\" Dart 3.2\\u3002\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 collection<\\/a> \\u5305<\\/p>\\r\\n\\r\\n \\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"],\"cangjie\":[\"Cangjie\",\" \\u7248\\u672c\\uff1a1.0.0 LTS (cjnative)<\\/p>\\r\\n\\r\\n \\u7f16\\u8bd1\\u53c2\\u6570\\uff1a \\u5feb\\u901f\\u5165\\u95e8\\u8bf7\\u67e5\\u9605\\u300c\\u4ed3\\u9889\\u7f16\\u7a0b\\u8bed\\u8a00\\u5f00\\u53d1\\u6307\\u5357\\u300d<\\/a><\\/p>\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[3,5,8]\n[2,1,3]\n[4,2,6]\n[1,1,1]\n[4,1,5,2]\n[3,3,2,3]",
"__typename": "QuestionNode"
}
}
}clang 19<\\/code> \\u91c7\\u7528\\u6700\\u65b0 C++ 23 \\u6807\\u51c6\\uff0c\\u5e76\\u4f7f\\u7528 GCC 14 \\u63d0\\u4f9b\\u7684 libstdc++<\\/code>\\u3002<\\/p>\\r\\n\\r\\n-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -gline-tables-only<\\/code> \\u53c2\\u6570\\u3002AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\nOpenJDK 21<\\/code>\\u3002\\u4f7f\\u7528\\u7f16\\u8bd1\\u53c2\\u6570 --enable-preview --release 21<\\/code><\\/p>\\r\\n\\r\\nPython 2.7.18<\\/code><\\/p>\\r\\n\\r\\nGCC 14<\\/code>\\uff0c\\u91c7\\u7528 GNU11 \\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -g1<\\/code> \\u53c2\\u6570\\u3002 AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n\\r\\nstruct hash_entry {\\r\\n int id; \\/* we'll use this field as the key *\\/\\r\\n char name[10];\\r\\n UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n struct hash_entry *s;\\r\\n HASH_FIND_INT(users, &user_id, s);\\r\\n return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"Node.js 22.14.0<\\/code><\\/p>\\r\\n\\r\\n--harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f \\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\nRuby 3.2<\\/code> \\u6267\\u884c<\\/p>\\r\\n\\r\\nSwift 6.0<\\/code><\\/p>\\r\\n\\r\\nGo 1.23<\\/code><\\/p>\\r\\n\\r\\nPython 3.11<\\/code><\\/p>\\r\\n\\r\\nScala 3.3.1<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"Kotlin 2.1.10<\\/code><\\/p>\"],\"rust\":[\"Rust\",\"rust 1.88.0<\\/code>\\uff0c\\u4f7f\\u7528 edition 2024\\u3002<\\/p>\\r\\n\\r\\nPHP 8.2<\\/code>.<\\/p>\\r\\n\\r\\n-O2 --disable-reflection<\\/code><\\/p>\\r\\n\\r\\n