这题能用双指针吗??
查看原帖
这题能用双指针吗??
983021
xingyu671楼主2024/9/9 17:36

这题能不能这样做:

#include<bits/stdc++.h>
using namespace std;
#define len (j-i+1)
#define Vget (sum[j]-sum[i-1])*1.0/len
int a[100005],sum[100005],N,S,T;
double V,ans;
int main()
{
	cin >> N >> S >> T;
	for(int i = 1;i <= N;i++)
	{
		scanf("%d",a+i);
		sum[i] = sum[i-1]+a[i];
	}
	int i = 1,j = S;
	while(j < N)
	{
		V = Vget;
		ans = max(ans,V);
		if(j < N)
		{
			j++;
			V = Vget;
		}
		if(((j-i+1) > T || a[i] <= V) && (j-i+1) > S)
		{
			i++;
			V = Vget;
		}
		ans = max(ans,V);
	}
	while((j-i+1) >= S)
	{
		i++;
		if((j-i+1) >= S) V = Vget;
		ans = max(ans,V);
	}
	printf("%0.3f",ans);
    return 0;
}
2024/9/9 17:36
加载中...