90pts|求助大佬不知道哪里错了
查看原帖
90pts|求助大佬不知道哪里错了
429818
Smithespics楼主2023/4/3 20:50
#include<iostream>
#include<cmath>
#include<iomanip>
#include<queue>
#include<algorithm>
#define int long long
using namespace std;
int n,S;
double mu;
double std1;
priority_queue<double,vector<double>,greater<double> > q;

signed main(){
	cin >> n >> S;
	mu = 1.0*S/n;

	for(int i = 1;i <= n;i++){
		int tem;
		cin >> tem;
		q.push(1.0*(tem-mu));
	}
		
	double cum = 0;
	while(!q.empty()){
		double temp = q.top();
		q.pop();
		//cout << cum << endl;
		if(temp < 0){
			std1 += temp*temp;
			cum += temp;
			continue;
		}
		else if(temp == 0){
			continue;
		}
		else{
			if(cum == 0){
				break;
			}
			else if(cum < 0){
				if(temp < abs(1.0*cum/(q.size()+1))){
					std1 += temp*temp;
					cum += temp;
				}
				else{
					std1 += 1.0*(q.size()+1)*(1.0*cum/(q.size()+1))*(1.0*cum/(q.size()+1));
					break;
				}
			}
		}
	}
	
	cout << setprecision(4) << fixed << sqrt(1.0*std1/n) << endl;
	return 0;
} 
2023/4/3 20:50
加载中...