洛谷P4086 [USACO17DEC]My Cow Ate My Homework S

题目

https://www.luogu.com.cn/problem/P4086

思路

水题,注意精度问题就好,建议保存一个分子,一个分母,比较时用乘法代替除法,避免精度误差。

代码

#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
",d[i]);
	// system("pause");
	return 0;
}
原文地址:https://www.cnblogs.com/landmine-sweeper/p/13994201.html