补题 [CF1840C] Ski Resort
补题 [CF1840C] Ski Resort
题目描述
Dima Vatrushin 是一所学校的数学教师。由于他的出色工作,他被派去度假 $n$ 天。Dima长期以来一直梦想去滑雪胜地,因此他想安排几天连续的时间去滑雪。由于度假需要仔细准备,他至少要去 $k$ 天。
给定一个包含度假胜地天气预报的数组 $a$。换句话说,在第 $i$ 天,气温将为 $a_i$ 度。
Dima出生在西伯利亚,因此只有整个假期都不超过 $q$ 度的情况下,他才能度假。
不幸的是,Dima学数学学的,以至于他忘记了如何计算。他请求你帮助他计算在胜地选择度假日的方法数。
输入格式
输入的第一行包含一个整数 $ t $ ( $ 1 \le t \le 10^4 $ ) — 表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含三个整数 $ n $ , $ k $ , $ q $ ( $ 1 \le n \le 2 \cdot 10^5 $ , $ 1 \le k \le n $ , $ -10^9 \le q \le 10^9 $ )— 数组 $ a $ 的长度,Dima 在度假村最少需要的天数,以及他能接受的最高温度。
每个测试用例的第二行包含 $ n $ 个整数 $ a_1, a_2, a_3, \dots, a_n $ ( $ -10^9 \le a_i \le 10^9 $ ) — 滑雪度假村的温度。
所有测试用例中 $n$ 的总和不超过 $ 2 \cdot 10^5 $。
输出格式
输出 $ t $ 个整数,每个对应于一个测试用例的答案,表示 Dima 在度假村选择度假日期的方法数。
样例 #1
样例输入 #1
1 | 7 |
样例输出 #1
1 | 6 |
提示
在示例的第一组测试数据中,Dima 可以选择任何一天进行旅行,因此适合他的日期有 [1]、[2]、[3]、[1, 2]、[2, 3] 和 [1, 2, 3]。
在示例中的第二组和第四组测试数据中,由于气温过高,Dima 无法在任何一天出行,因此没有适合的日期。
在示例的第三组测试数据中,Dima 只能在日期 [1, 2, 3] 进行旅行。
题解
题目解析
一道求区间长度的题,题目需要我们求当区间长度大于等于 $k$ 时,连续天数的个数.通过B站dalao的讲解,提供了一种 $O(n)$ 方法,就是相当于一个 $f(x)$ 函数在 $y=q$ 画一条线,只要底下的部分.
我的做法是利用题目中给的 $q$ 来把连续区间存到一个数组里,然后用等差数列求和公式来求得在这个区间的所有情况.详细内容放到代码注释里.
AC代码
1 |
|