酷代码 AI
菜单
服务商

挑战2 提示 设置 返回主界面 课程目录 花园里一共有n(n<100)朵花,从1到n排成一行。而朵朵打算让大家一共浇q轮水,每轮浇水的时候,朵朵会告诉大家从第L朵花开始到第R朵花为止,中间所有的花都浇一次水,包括两端。同时朵朵还需要大家回答出,浇完所有的水之后,每一朵花被浇了几次水。 输入: 第一行两个数n和q代表花的数量,和浇水轮数。 接下来q行,每行两个数L和R,表示每轮浇水的区间。 输出: 输出n个数,用空格隔开。依次表示每朵花被浇水的次数。 输入样例: 5 3 1 3 2 4 3 5 输出样例: 1 2 3 2 1 用时/内存: 1000MS/100MB 提示: 数组a[i]代表第i朵花的浇水次数。 花园里一共有n(n<100)朵花,从1到n排成一行。而朵朵打算让大家一共浇q轮水,每轮浇水的时候,朵朵会告诉大家从第L朵花开始到第R朵花为止,中间所有的花都浇一次水,包括两端。同时朵朵还需要大家回答出,浇完所有的水之后,每一朵花被浇了几次水。#include <iostream> using namespace std; int main() {

```cpp #include <iostream> using namespace std; int main() { int n, q; cin >> n >> q; int a[100] = {0}; for (int i = 0; i < q; i++) { int L, R; cin >> L >> R; for (int j = L; j <= R; j++) { a[j - 1]++; } } for (int i = 0; i < n; i++) { if (i > 0) { cout << " "; } cout << a[i]; } cout << endl; return 0; } ``` 代码解释 1. 初始化部分: - 读取花的数量 `n` 和浇水轮数 `q`。 - 定义一个长度为 100 的数组 `a` 并初始化为 0,数组 `a` 用于记录每朵花被浇水的次数。 2. 浇水操作: - 通过 `for` 循环进行 `q` 轮浇水,每次读取浇水区间的起始位置 `L` 和结束位置 `R`。 - 对于每一轮浇水,从第 `L` 朵花到第 `R` 朵花(数组下标从 0 开始,所以是 `j - 1`),将对应数组元素的值加 1,表示这朵花被浇了一次水。 3. 输出结果: - 通过 `for` 循环遍历数组 `a`,依次输出每朵花被浇水的次数,元素之间用空格分隔,最后换行。 复杂度分析 - 时间复杂度:$O(q * n)$,其中 `q` 是浇水轮数,`n` 是花的数量。对于每一轮浇水,最坏情况下需要遍历 `n` 朵花。 - 空间复杂度:$O(n)$,主要用于存储每朵花被浇水的次数。 [2026-02-07 21:11:53 | AI问答 | 465点数解答]

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