90分难受啊...
查看原帖
90分难受啊...
482730
aSunnyDay楼主2021/7/26 09:46

大家好,这道题目大体思路是这样的

100000的数据我用的贪心

题目要求平均数-中位数最大

就尽量让平均数大,中位数小

举个栗子 1 2 3 4 5 6 7 8 9 10

我们不会选择4 5 6 7 8 9

这样绝对不是答案

而是左边取i个,右边取i-1个(排完序后),这样中位数是x[i],平均数是比较大的

但是反例想不出来啊,各位大神帮帮忙,谢谢!

#include<bits/stdc++.h>
#define N 100009 
using namespace std;
typedef long long ll;
double x[N],s[N],s2[N],ans=0;
ll n;
int main(){
	cin>>n;
	for(ll i=1;i<=n;++i) cin>>x[i];
	sort(x+1,x+n+1);
	for(ll i=1;i<=n;++i) s[i]=s[i-1]+x[i];
	for(ll i=n;i>=1;--i) s2[i]=s2[i+1]+x[i];
	for(ll i=1;i<=(n+1)/2;++i) ans=max(ans,(s[i]+s2[n-i+2])/(i*2-1)-x[i]);
	printf("%.2lf",ans);
	return 0;
}
2021/7/26 09:46
加载中...