小明和神秘宝箱问题解析
问题理解
小明有 nnn 个神秘宝箱,每个宝箱 iii 可以得到的金币数在区间 [li,ri][l_i, r_i][li ,ri ] 内。我们需要计算开启所有宝箱后,小明能够获得的最少金币数和最大金币数。
数学分析
这是一个简单的区间求和问题:
* 最少金币数:当每个宝箱都取最小值 lil_ili 时,总金币数最小
* 最大金币数:当每个宝箱都取最大值 rir_iri 时,总金币数最大
数学表达式为:
* 最少金币数:∑i=1nli\sum_{i=1}^{n} l_i∑i=1n li
* 最大金币数:∑i=1nri\sum_{i=1}^{n} r_i∑i=1n ri
代码实现
算法分析
1. 时间复杂度:O(n)O(n)O(n),需要遍历所有 nnn 个宝箱
2. 空间复杂度:O(1)O(1)O(1),只使用了固定数量的变量
注意事项
* 使用 long long 类型存储结果,因为 nnn 最大为100000,lil_ili 和 rir_iri 最大为 10910^9109,总和可能达到 101410^{14}1014,超出了 int 类型的表示范围
* 算法简单直接,直接累加每个区间的端点是最高效的解决方案
* 题目保证 1≤li≤ri≤1091 \leq l_i \leq r_i \leq 10^91≤li ≤ri ≤109,不需要额外的输入验证