差分数组实现区间多次累加(C++)
这道题本质是一个区间累加问题,暴力方法会对每轮区间内的花逐一增加,时间复杂度 O(n*q),在大数据下性能差。 我们可以用 **差分数组** 来优化。差分数组 `diff[i]` 表示第 `i` 朵花与第 `i-1` 朵花浇水次数的差值。对区间 `[L, R]` 浇水一次,只需: ``` diff[L] += 1 diff[R+1] -= 1 ``` 最后通过前缀和还原每朵花的浇水次数。 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; cin >> n >> q; // 差分数组,下标从1开始,需要多开一位处理R+1 vector<int> diff(n + 2, 0); for (int i = 0; i < q; i++) { int L, R; cin >> L >> R; diff[L] += 1; diff[R + 1] -= 1; } // 前缀和还原原数组 vector<int> result(n + 1, 0); int current = 0; for (int i = 1; i <= n; i++) { current += diff[i]; result[i] = current; } // 输出 for (int i = 1; i <= n; i++) { if (i > 1) cout << " "; cout << result[i]; } cout << endl; return 0; } ``` ######[AI问答 | 368点数解答 | 2026-06-06 14:29:57]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)382
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)272
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)277
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)265
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)412
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)44
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)373
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)406
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)196
- C++ 实现:根据给定序列与条件计算满足要求的整数对数量(字节豆包 | 232点数解答 | 2025-04-23 17:33:20)180
- C++ 求解满足特定条件整数对数量:从 O(M^2) 到 O(N + M) 的优化(百度文心 | 1197点数解答 | 2025-04-23 17:36:27)257
- JavaScript开发:为何 React 的 useState 用数组而非对象?优势揭秘!(阿里通义 | 202点数解答 | 2023-11-09 01:54:01)305