C++ 实现区域干净度计算,找出最干净区域的干净度
以下是解决此问题的 C++ 代码: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, q; // 读取区域数量 n 和打扫次数 q cin >> n >> q; // 创建一个长度为 n+1 的向量来存储每个区域的干净度,初始值都为 0 vector<int> cleanliness(n + 1, 0); for (int i = 0; i < q; ++i) { int Li, Ri, Xi; // 读取每次打扫的范围和干净度增加的值 cin >> Li >> Ri >> Xi; // 在打扫范围的起始位置加上干净度增加值 cleanliness[Li] += Xi; // 如果打扫范围的结束位置不是最后一个区域,在结束位置的下一个位置减去干净度增加值 if (Ri + 1 <= n) { cleanliness[Ri + 1] -= Xi; } } // 计算每个区域的实际干净度 for (int i = 1; i <= n; ++i) { cleanliness[i] += cleanliness[i - 1]; } // 找出最干净区域的干净度 int max_cleanliness = *max_element(cleanliness.begin() + 1, cleanliness.end()); // 输出最干净区域的干净度 cout << max_cleanliness << endl; return 0; } ``` ### 代码解释: 1. **输入读取**:首先读取区域数量 `n` 和打扫次数 `q`。 2. **差分数组**:使用一个长度为 `n + 1` 的向量 `cleanliness` 来存储每个区域的干净度,初始值都为 0。对于每次打扫,在打扫范围的起始位置加上干净度增加值,在结束位置的下一个位置减去干净度增加值。 3. **计算实际干净度**:通过前缀和的方式,将差分数组转换为每个区域的实际干净度。 4. **找出最大值**:使用 `max_element` 函数找出最干净区域的干净度。 5. **输出结果**:输出最干净区域的干净度。 ######[AI问答 | 528点数解答 | 2026-03-13 20:05:24]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)338
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)307
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)61
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)22
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)354
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)366
- C++ 破解数字游戏:找出数组添加全排列后相同数字最大数量(字节豆包 | 456点数解答 | 2025-02-27 18:56:24)269
- C++助力小小李老师:求解数组添加排列后最多相同数字数量(字节豆包 | 424点数解答 | 2025-03-01 14:46:52)218
- C++助力小小李老师:破解数组数字游戏最高得分之谜(字节豆包 | 434点数解答 | 2025-03-05 07:50:34)236
- C++ 助力小小李老师玩转数字游戏,找出数组最大相同元素次数!(DeepSeek | 1118点数解答 | 2025-03-25 21:11:51)185
- C++ 助力小小李老师:解决数组添加排列找最大重复元素难题(DeepSeek | 833点数解答 | 2025-03-26 17:06:19)170
- C++助力小小李老师:破解数组排列数字游戏最高得分之谜(DeepSeek | 901点数解答 | 2025-03-26 17:08:11)173