酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++ 实现花园花朵浇水次数统计及区间求和

以下是使用 C++ 解决该问题的代码: ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; // 输入花的数量 n 和浇水轮数 q cin >> n >> q; // 初始化每朵花的浇水次数为 0 vector<int> waterCount(n + 1, 0); // 进行 q 轮浇水 for (int i = 0; i < q; ++i) { int L, R, x; // 输入每轮浇水的区间 [L, R] 和浇水次数 x cin >> L >> R >> x; // 对区间 [L, R] 内的花增加浇水次数 for (int j = L; j <= R; ++j) { waterCount[j] += x; } } int left, right; // 输入要查询的区间 [left, right] cin >> left >> right; int sum = 0; // 计算区间 [left, right] 内每朵花浇水次数之和 for (int i = left; i <= right; ++i) { sum += waterCount[i]; } // 输出结果 cout << sum << endl; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取花的数量 `n` 和浇水轮数 `q`。然后使用 `vector` 存储每朵花的浇水次数,初始值都为 0。 2. **浇水操作**:进行 `q` 轮浇水,每轮输入浇水的区间 `[L, R]` 和浇水次数 `x`,将该区间内的每朵花的浇水次数增加 `x`。 3. **查询操作**:输入要查询的区间 `[left, right]`,计算该区间内每朵花浇水次数之和。 4. **输出结果**:输出查询区间内每朵花浇水次数之和。 ### 复杂度分析: - **时间复杂度**:浇水操作的时间复杂度为 $O(q * (R - L + 1))$,查询操作的时间复杂度为 $O(right - left + 1)$。 - **空间复杂度**:$O(n)$,主要用于存储每朵花的浇水次数。 ######[AI问答 | 560点数解答 | 2026-04-17 20:20:58]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]