C++ 前缀和实现区间查询问题
这个问题是一个典型的**区间求和**问题。因为数据范围较小(n, q < 100),我们可以直接用**前缀和**(Prefix Sum)算法来高效计算。 ### 🧠 解题思路 - 构建一个前缀和数组 `pre`,其中 `pre[i]` 表示从第1朵花到第i朵花的鲜艳值总和。 - 区间 `[L, R]` 的总和 = `pre[R] - pre[L-1]`。 - 每次查询的复杂度为 `O(1)`,整体复杂度 `O(n + q)`。 ### 💻 C++ 代码实现 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; cin >> n >> q; vector<int> a(n + 1); // 下标从1开始 vector<int> pre(n + 1, 0); // 前缀和数组 // 读入花的鲜艳值 for (int i = 1; i <= n; i++) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; // 构造前缀和 } // 处理每次查询 for (int i = 0; i < q; i++) { int L, R; cin >> L >> R; cout << pre[R] - pre[L - 1] << endl; } return 0; } ``` ### 🔍 代码说明 - 我们使用了一个**从1开始**的数组,避免处理边界问题时出错。 - `pre[i]` 存储了从下标1到下标i的所有鲜艳值之和。 - 对于每次询问 `[L, R]`,直接通过 `pre[R] - pre[L-1]` 得到结果,非常快。 ######[AI问答 | 415点数解答 | 2026-06-21 19:20:20]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)390
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)279
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)283
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)272
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)474
- 补全含错误代码:Vue结合Element UI组件实现查询、新增及表格展示功能 ( | 400点数解答 | 2023-12-19 15:20:50)468
- 单线程频繁查ClickHouse致CPU飙升?这些优化方案速看!(DeepSeek | 491点数解答 | 2025-02-13 17:49:54)262
- MySQL:巧用 NOT LIKE 查询字段不包含特定字符串及注意要点 (DeepSeek | 264点数解答 | 2025-02-13 18:25:01)205
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)408
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)410
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)196
- C++ 实现:根据给定序列与条件计算满足要求的整数对数量(字节豆包 | 232点数解答 | 2025-04-23 17:33:20)184