通过率 100% · 提交 7 · 通过 7
在艾瑟兰大陆上,法师协会会持续记录一条魔晶能量序列。给定一个长度为 `n` 的整数数组 `mana`,其中 `mana[i]` 表示第 `i` 颗魔晶在某一时刻释放出的能量值。 协会定义一种特殊的连续区间,称为异常魔能区间: 对于任意一个长度恰好为 `k` 的,如果其中存在至少一个元素,该子数组平均值的 `t` 倍,即满足: `mana[x] > (sum / k) * t` 其中 `sum` 表示这个长度为 `k` 的连续子数组内所有元素之和。 那么这个连续子数组就被称为一个异常魔能区间。 现在,请你统计在整个序列中,一共有多少个长度为 `k` 的异常魔能区间。 注意:这里的 `t` 为整数,且必须满足“严格大于”,如果某个元素恰好等于平均值的 `t` 倍,则不算异常魔能区间。 输入:第一行输入三个整数 `n`、`k`、`t`,分别表示魔晶数量、需要考察的连续区间长度,以及倍数参数。 第二行输入 `n` 个整数,表示数组 `mana`。 输出:输出一个整数,表示长度为 `k` 的异常魔能区间个数。
这类题属于华为可信认证科目一方向中「可信 / 优先队列」方向的高频题型,通常考察对「可信 / 优先队列」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入三个整数 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
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。