大小为 K 且平均值大于等于阈值的子数组数目(c++题解)

题目描述

题目描述

给你一个整数数组 arr 和两个整数 k 和 threshold 。

请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。

输入格式

第一行输入三个整数  和  和  ,分别表示arr 数组元素数量、长度限制、平均值限制。

第二行输入个空格分开的整数,表示arr 数组。

输出格式

输出一个整数,表示答案。

样例
样例输入1
复制8 3 4
2 2 2 2 5 5 5 8
样例输出1
复制3
样例解释1

子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6 。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。

样例输入2
复制10 3 5
11 13 17 23 29 31 7 5 2 3
样例输出2
复制6
样例解释2

前 6 个长度为 3 的子数组平均值都大于 5 。注意平均值不是整数。

____________________________________________________________________________
日常发作业题解。 

今天才知道这个叫滑动窗口,我以为这么简单的没有名字

也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

____________________________________________________________________________

#include 
using namespace std;
int n,m,x,ans,cnt;
int a[1000005];
int main(){
	cin>>n>>m>>x;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++){
		cnt+=a[i];
	}if(cnt/m>=x)ans++;
	for(int i=m+1;i<=n;i++){//滑动窗口。
	    cnt+=a[i]-a[i-m];
		if(cnt/m>=x)ans++;
	}
	cout<

 

你可能感兴趣的:(c++,算法,数据结构)