AlgoMooc
← 返回题库

K0101. 魔能异常区间

困难通过率 100% · 提交 7 · 通过 7
滑动窗口前缀和数学

小慕正在处理一份项目中的能量波动数据。给定一个长度为 `n` 的整数数组 `data`,其中 `data[i]` 表示第 `i` 个时间点采集到的能量值。 小慕定义了一种特殊的连续时间窗口,称为异常波动窗口: 对于任意一个长度恰好为 `k` 的,如果其中存在至少一个元素,该子数组平均值的 `t` 倍,即满足: `data[x] > (sum / k) * t` 其中 `sum` 表示这个长度为 `k` 的连续子数组内所有元素之和。 那么这个连续子数组就被称为一个异常波动窗口。 现在,请你帮助小慕统计在整个序列中,一共有多少个长度为 `k` 的异常波动窗口。 注意:这里的 `t` 为整数,且必须满足“严格大于”,如果某个元素恰好等于平均值的 `t` 倍,则不算异常波动窗口。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入三个整数 `n`、`k`、`t`,分别表示魔晶数量、需要考察的连续区间长度,以及倍数参数。 第二行输入 `n` 个整数,表示数组 `mana`。

输出描述

输出一个整数,表示长度为 `k` 的异常魔能区间个数。

示例

示例 1

输入

6 3 2
1 5 60 4 3 7

输出

3

说明:长度为 `3` 的所有连续子数组如下: `[1,5,60]`,平均值为 `(1+5+60)/3 = 22`,其中 `60 > 22 * 2`,满足条件; `[5,60,4]`,平均值为 `(5+60+4)/3 = 23`,其中 `60 > 23 * 2`,满足条件; `[60,4,3]`,平均值为 `(60+4+3)/3 = 22.333...`,其中 `60 > 22.333... * 2`,满足条件; `[4,3,7]``中没有元素严格大于平均值的 2 倍,不满足条件。` 因此答案为 `3`。

示例 2

输入

6 4 2
2 4 5 4 6 14

输出

0

说明:长度为 `4` 的所有连续子数组为: `[2,4,5,4]` `[4,5,4,6]` `[5,4,6,14]` 它们都不是异常魔能区间。 例如在 `[5,4,6,14]` 中,平均值为 `(5+4+6+14)/4 = 7.25`,平均值的 `2` 倍为 `14.5`,而最大值 `14` 并没有严格大于 `14.5`,因此不满足条件。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。