酷代码 AI
菜单
服务商

C++实现队员战斗力区间求和问题的解决方案

```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, m; // 输入队员数量 n 和考验次数 m cin >> n >> m; // 存储每个队员的战斗力 vector<int> a(n + 1); // 存储前缀和 vector<int> prefixSum(n + 1, 0); // 输入每个队员的战斗力 for (int i = 1; i <= n; ++i) { cin >> a[i]; // 计算前缀和 prefixSum[i] = prefixSum[i - 1] + a[i]; } // 处理 m 次考验 for (int i = 0; i < m; ++i) { int L, R; // 输入每次考验的范围 L 和 R cin >> L >> R; // 计算从第 L 到第 R 个人的战斗力之和 int sum = prefixSum[R] - prefixSum[L - 1]; // 输出结果 cout << sum << endl; } return 0; } ``` ### 代码解释 1. **输入处理**: - 首先读取队员数量 `n` 和考验次数 `m`。 - 接着读取每个队员的战斗力并存储在数组 `a` 中。 - 同时计算前缀和数组 `prefixSum`,`prefixSum[i]` 表示前 `i` 个队员的战斗力之和。 2. **前缀和计算**: - 通过循环 `for (int i = 1; i <= n; ++i)` 计算前缀和,`prefixSum[i] = prefixSum[i - 1] + a[i]`。 3. **处理考验**: - 对于每次考验,读取范围 `L` 和 `R`。 - 利用前缀和计算从第 `L` 到第 `R` 个人的战斗力之和,公式为 `prefixSum[R] - prefixSum[L - 1]`。 - 输出每次考验的结果。 ######[AI问答 | 504点数解答 | 2026-05-30 16:00:26]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]