C++前缀和实现区间和查询的高效算法
看到这个题目,你需要实现一个高效处理区间和查询的算法。由于 n 和 m 可能很大,直接遍历每个区间会超时。推荐使用**前缀和**预处理。 🧮 **前缀和思路** 前缀和数组 `pre[i]` 表示前 i 个数的和(`pre[0] = 0`)。那么区间 `[L, R]` 的和就等于 `pre[R] - pre[L - 1]`。预处理 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(0); int n; cin >> n; vector<long long> a(n + 1, 0); vector<long long> pre(n + 1, 0); for (int i = 1; i <= n; i++) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; } int m; cin >> m; while (m--) { int L, R; cin >> L >> R; cout << pre[R] - pre[L - 1] << '\n'; } return 0; } ``` 📝 **代码说明** - 用 `long long` 防止美丽值总和溢出(美丽值可能为负数或大整数)。 - `pre[i]` 直接从输入时构建,省去额外数组 `a` 也可以,但保留 `a` 更清晰。 - 使用 `ios::sync_with_stdio(false)` 和 `cin.tie(0)` 加速输入输出,应对大数据量。 ✅ **测试样例** 输入: ``` 5 1 2 3 4 5 3 1 3 2 4 1 5 ``` 输出: ``` 6 9 15 ``` ######[AI问答 | 446点数解答 | 2026-08-29 22:02:34]
- 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
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 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
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)484
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)452
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)228