酷代码 AI
菜单
服务商

c++花园里一共有n(n<100)朵花,从1到n排成一行。而朵朵打算让大家一共浇q轮水,每轮浇水的时候,朵朵会告诉大家从第L朵花开始到第R朵花为止,中间所有的花都浇一次水,包括两端。同时朵朵还需要大家回答出,浇完所有的水之后,每一朵花被浇了几次水。 输入: 第一行两个数n和q代表花的数量,和浇水轮数。 接下来q行,每行两个数L和R,表示每轮浇水的区间。 输出: 输出n个数,用空格隔开。依次表示每朵花被浇水的次数。

以下是使用 C++ 解决该问题的代码: ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; // 输入花的数量 n 和浇水轮数 q cin >> n >> q; // 初始化一个长度为 n 的数组,用于记录每朵花被浇水的次数,初始值都为 0 vector<int> waterCount(n, 0); for (int i = 0; i < q; ++i) { int L, R; // 输入每轮浇水的区间 [L, R] cin >> L >> R; // 注意:题目中花是从 1 开始编号,而数组下标从 0 开始,所以要将 L 和 R 减 1 for (int j = L - 1; j < R; ++j) { // 对应区间内的花的浇水次数加 1 waterCount[j]++; } } // 输出每朵花被浇水的次数 for (int i = 0; i < n; ++i) { if (i > 0) { cout << " "; } cout << waterCount[i]; } cout << endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取花的数量 `n` 和浇水轮数 `q`。 2. 数组初始化:创建一个长度为 `n` 的 `vector` 数组 `waterCount`,用于记录每朵花被浇水的次数,初始值都为 0。 3. 浇水操作:通过循环 `q` 次,每次读取浇水的区间 `[L, R]`,然后将该区间内的花的浇水次数加 1。 4. 输出结果:遍历 `waterCount` 数组,依次输出每朵花被浇水的次数,用空格隔开。 复杂度分析: - 时间复杂度:$O(q * n)$,其中 $q$ 是浇水轮数,$n$ 是花的数量。 - 空间复杂度:$O(n)$,主要用于存储每朵花的浇水次数。 [2026-01-09 19:42:19 | AI问答 | 519点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多