C++ 利用前缀和解决队员战斗力区间求和问题
### 🍭思路分析 此问题同样适合使用前缀和的方法来高效解决。通过预先计算前缀和数组,能在 $O(1)$ 时间复杂度内计算出任意区间 `[L, R]` 的战斗力总和。 ### 🍬代码实现 ```cpp #include <iostream> #include <vector> int main() { int n, m; // 读取 n 和 m std::cin >> n >> m; // 存储每个队员的战斗力 std::vector<int> a(n + 1); // 存储前缀和 std::vector<int> prefixSum(n + 1, 0); // 读取每个队员的战斗力并计算前缀和 for (int i = 1; i <= n; ++i) { std::cin >> a[i]; // 计算前缀和 prefixSum[i] = prefixSum[i - 1] + a[i]; } // 处理 m 次查询 for (int i = 0; i < m; ++i) { int L, R; std::cin >> L >> R; // 计算区间 [L, R] 的战斗力总和 int result = prefixSum[R] - prefixSum[L - 1]; std::cout << result << std::endl; } return 0; } ``` ### 🍫代码解释 1. **输入处理**:首先读取队员数量 `n` 和查询次数 `m`,接着读取每个队员的战斗力存储在 `a` 数组中。 2. **前缀和计算**:创建 `prefixSum` 数组,`prefixSum[i]` 表示前 `i` 个队员的战斗力总和,通过 `prefixSum[i] = prefixSum[i - 1] + a[i]` 进行计算。 3. **查询处理**:对于每次查询,读取区间 `[L, R]`,利用 `prefixSum[R] - prefixSum[L - 1]` 计算该区间的战斗力总和并输出。 ### 🍮复杂度分析 - **时间复杂度**:计算前缀和数组的时间复杂度为 $O(n)$,每次查询的时间复杂度为 $O(1)$,所以总的时间复杂度为 $O(n + m)$。 - **空间复杂度**:需要额外的 $O(n)$ 空间来存储前缀和数组。 ### 🍰开发建议 - **输入验证**:在实际开发中,要对输入的 `n`、`m`、`L`、`R` 和 `a[i]` 进行合法性检查,避免出现越界等错误。 - **异常处理**:添加异常处理代码,例如输入格式错误等情况,增强程序的健壮性。 - **代码优化**:可以考虑对代码进行进一步优化,如减少不必要的变量使用,提高代码的执行效率。 ### 📘学习资源 - [C++ 官方文档](https://en.cppreference.com/w/):提供了 C++ 语言的详细文档和教程。 - 《C++ Primer》:经典的 C++ 学习书籍,对 C++ 语言的各个方面有详细的介绍。 ######[AI写代码神器 | 737点数解答 | 2026-05-29 20:42:37]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)382
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)271
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)275
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)262
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)171
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)193
- 用Python轻松将PPT每页转为图片,附代码示例!(阿里通义 | 315点数解答 | 2024-04-23 10:01:04)1409
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)406
- Winform开发:含验证与清空功能的注册页面实现(GPT | 5266点数解答 | 2024-06-14 16:04:40)504
- Python 实战:购物折扣计算、列表求和与平方数推导代码全解(字节豆包 | 235点数解答 | 2024-10-28 14:46:54)247
- Python 实现:在 Windows 系统将 PPT 每页轻松转为图片(百度文心 | 692点数解答 | 2024-10-30 18:08:44)401
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)194