C++ 实现对指定范围数组元素求和的多次询问
以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> int main() { int n, m; // 输入 n 和 m std::cin >> n >> m; // 存储数组 a std::vector<int> a(n + 1); for (int i = 1; i <= n; ++i) { std::cin >> a[i]; } // 存储每次询问的 k std::vector<int> queries(m); for (int i = 0; i < m; ++i) { std::cin >> queries[i]; } // 处理每次询问 for (int i = 0; i < m; ++i) { int k = queries[i]; int sum = 0; // 计算从 a[k] 到 a[n] 的和 for (int j = k; j <= n; ++j) { sum += a[j]; } std::cout << sum << std::endl; } return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取 `n` 和 `m`,然后读取 `n` 个整数存储在数组 `a` 中,接着读取 `m` 个询问的 `k` 值存储在 `queries` 数组中。 2. **计算和**:对于每个询问的 `k`,从 `a[k]` 开始累加到 `a[n]`,并将结果输出。 ### 复杂度分析: - **时间复杂度**:对于每次询问,需要遍历从 `k` 到 `n` 的元素,因此每次询问的时间复杂度为 $O(n)$,总共 `m` 次询问,总的时间复杂度为 $O(m * n)$。 - **空间复杂度**:主要使用了两个数组 `a` 和 `queries`,空间复杂度为 $O(n + m)$。 ######[AI问答 | 475点数解答 | 2026-05-30 16:14:44]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)401
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)42
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)368
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)460
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)379
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)390
- 二手车交易价格预测赛题:思路剖析与程序实现全步骤揭秘(讯飞星火 | 1207点数解答 | 2024-11-17 18:48:26)390
- 揭秘!40 万条数据二手车交易价格预测赛题思路与程序实现全步骤(字节豆包 | 557点数解答 | 2024-11-17 18:50:01)281
- 二手车交易价格预测赛题:从数据处理到模型调优全流程揭秘(阿里通义 | 1736点数解答 | 2024-11-17 18:50:36)307
- Python:在同一窗口用 subplot 绘制函数 [-5,5]×[0,10] 范围的曲面图与等高线图(字节豆包 | 232点数解答 | 2025-05-08 19:07:46)148
- MATLAB:在同一窗口用 subplot 绘制特定范围 x、y 的函数曲面图与等高线图(字节豆包 | 194点数解答 | 2025-05-08 19:08:10)133
- Python 求解:小数 x 最小值使 Sx 大于 y 的奥秘(字节豆包 | 359点数解答 | 2025-12-07 12:37:48)76