洛谷P4086 [USACO17DEC]My Cow Ate My Homework S
题目
https://www.luogu.com.cn/problem/P4086
思路
水题,注意精度问题就好,建议保存一个分子,一个分母,比较时用乘法代替除法,避免精度误差。
代码
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define maxn (int)(1e5+10)
#define inf 0x3f3f3f3f
using namespace std;
int a[maxn],m[maxn],n,s[maxn];
int d[maxn],cnt=0;
long long val1=-1,val2=1;
int main(){
int i,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
m[n+1]=inf;
for(i=n;i>=1;--i){
m[i]=min(m[i+1],a[i]);
s[i]=s[i+1]+a[i];
}
for(i=1;i<=n-2;++i){
if((s[i+1]-m[i+1])*val2>(n-i-1)*val1){
val1=s[i+1]-m[i+1];
val2=n-i-1;
cnt=0;
d[++cnt]=i;
}
else if((s[i+1]-m[i+1])*val2==(n-i-1)*val1) d[++cnt]=i;
}
for(i=1;i<=cnt;++i)
printf("%d\n",d[i]);
// system("pause");
return 0;
}