付账问题

题目 付账问题

image-67f69058

思路分析

image-7f8d3576

代码实现

#include<bits/stdc++.h>

using namespace std;

typedef long double LD;

const int N=5e5+10;

int a[N];

int n;

LD s;

int main()

{

    cin>>n>>s;

    for(int i=0;i<n;i++)

        cin>>a[i];

    sort(a,a+n);

    LD avg=s/n,cur_avg=avg,sum=0;

    for(int i=0;i<n;i++){

        if(a[i]<cur_avg){

            s-=a[i];

            sum+=(avg-a[i])*(avg-a[i]);

            cur_avg=s/(n-i-1);

        }

        else

            sum+=(avg-cur_avg)*(avg-cur_avg);

    }

    printf("%.4Lf",sqrt(sum/n));

    return 0;

}

同类题型

视频讲解


⬅️ 中位 平均 🏠 00-刷题理模型 ➡️ 平均