C++前缀和高效解决区间求和查询
## 📝 问题解析 这道题要求快速回答前缀和查询。n 和 m 最大可达 100,000,若对每个询问都累加前 k-1 项,复杂度为 O(n*m),会超时。利用前缀和数组,一次预处理 O(n),每次查询 O(1),总复杂度 O(n+m),高效解决。 ## 💻 C++ 代码实现 ```cpp #include <iostream> #include <vector> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<long long> prefix(n + 1, 0); // prefix[i] 表示前 i 个数的和 for (int i = 1; i <= n; ++i) { long long x; cin >> x; prefix[i] = prefix[i - 1] + x; } for (int i = 0; i < m; ++i) { int k; cin >> k; // 题目要求 a[1]+...+a[k-1] 的和,即 prefix[k-1] cout << prefix[k - 1] << '\n'; } return 0; } ``` ## 🔍 代码说明 - 使用 `vector<long long>` 存储前缀和,因为 a[i] 最大 1000,n 最大 100000,总和最大 1e8,int 足够,但用 long long 更安全。 - 输入输出使用 `ios::sync_with_stdio(false)` 和 `cin.tie(nullptr)` 加速,避免大数据量下超时。 - 每次询问的 k 范围是 2 到 n+1,因此 `k-1` 的范围是 1 到 n,不会越界。 ## 📊 复杂度分析 - 预处理前缀和:O(n) - 每次查询:O(1) - 总时间复杂度:O(n + m) - 空间复杂度:O(n) ######[AI问答 | 461点数解答 | 2026-08-29 20:52:39]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)448
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)333
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)338
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)322
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)254
- 补全含错误代码:Vue结合Element UI组件实现查询、新增及表格展示功能 ( | 400点数解答 | 2023-12-19 15:20:50)520
- 单线程频繁查ClickHouse致CPU飙升?这些优化方案速看!(DeepSeek | 491点数解答 | 2025-02-13 17:49:54)301
- MySQL:巧用 NOT LIKE 查询字段不包含特定字符串及注意要点 (DeepSeek | 264点数解答 | 2025-02-13 18:25:01)255
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)452
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)228
- C++ 实现:根据给定序列与条件计算满足要求的整数对数量(字节豆包 | 232点数解答 | 2025-04-23 17:33:20)212
- C++ 求解满足特定条件整数对数量:从 O(M^2) 到 O(N + M) 的优化(百度文心 | 1197点数解答 | 2025-04-23 17:36:27)291