题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1679
#include<iostream>
#include<algorithm>
#include<iomanip>
#define int long long
using namespace std;
int n,a[200005],b[200005];
double ans,now;
int min(int a,int b){return a<b?a:b;}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
b[i]=b[i-1]+a[i];
int m=min(20000,n);
for(int i=1;i<=m;i++){
for(int j=0;j<=min(m-i,i);j++){
now=0;
now+=b[i]-b[i-j];
now+=a[i-j];
now+=b[n]-b[n-j];
now=1.0*now/(2*j+1);
ans=max(ans,now-a[i]);
}
}cout<<fixed<<setprecision(5)<<ans;
return 0;
}
20<n<=2000范围内正确,其他全部错误
本题我是想让中位数尽可能地小,比中位数小的数尽可能贴近中位数,比中位数大的尽可能大,这样价值最高。但为什么最小的数据范围也错了?
/AC本题/
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。