A
预处理最小值和前缀和
#include <bits/stdc++.h>
using namespace std;
int n,a[100005],mmin[100005];
double ave[100005],mmax=0;
int main()
{
cin >> n;
for(int i=1;i<=n;i++) cin >> a[i];
mmin[n]=a[n];mmax=0;int sum=a[n];
for(int i=n-1;i>=1;i--)
{
mmin[i]=min(mmin[i+1],a[i]);
sum+=a[i];ave[i]=double(sum-mmin[i])/(n-i);
mmax=max(mmax,ave[i]);
}
for(int i=2;i<=n-1;i++) if(ave[i]==mmax) cout << i-1 << endl;
return 0;
}
本文介绍了一种使用预处理最小值和前缀和的算法,通过计算数组中每个元素到数组末尾的最大平均值,找到该最大平均值对应的位置。此算法适用于解决特定类型的数据结构和算法问题。
9389

被折叠的 条评论
为什么被折叠?



