2 条题解

  • 0
    @ 2026-2-16 10:52:32

    这是一道基础的 数据处理与统计计算 题目。我们需要对输入的浮点数进行排序,去除极值后计算平均值和误差。 解题思路 1.读取输入:首先读取样本数量 n,然后读取 n 个浮点数存入数组。 2.排序:对数组进行升序排序,这样最大值就在最后,最小值就在最前。 3.计算平均值: .剔除第一个元素(最小值)和最后一个元素(最大值)。 .计算剩余 n−2个元素的总和。 .用总和除以n−2 得到平均值。 4.计算误差(最大绝对偏差): .遍历剔除极值后的所有元素。 .计算每个元素与平均值之差的绝对值。 .找出这些绝对值中的最大值。 5.格式化输出:根据题目要求,保留两位小数输出。 #include #include #include #include #include

    using namespace std;

    int main() { int n; cin >> n;

    vector<double> samples(n);
    for (int i = 0; i < n; i++) {
        cin >> samples[i];
    }
    
    // 1. 排序,方便剔除最大最小值
    sort(samples.begin(), samples.end());
    
    // 2. 计算有效样本的平均值
    // 剔除 samples[0] (最小) 和 samples[n-1] (最大)
    double sum = 0.0;
    for (int i = 1; i < n - 1; i++) {
        sum += samples[i];
    }
    double average = sum / (n - 2);
    
    // 3. 计算误差(最大绝对偏差)
    double max_error = 0.0;
    for (int i = 1; i < n - 1; i++) {
        double diff = fabs(samples[i] - average);
        if (diff > max_error) {
            max_error = diff;
        }
    }
    
    // 4. 输出结果,保留两位小数
    cout << fixed << setprecision(2) << average << " " << max_error << endl;
    
    return 0;
    

    }

    • 0
      @ 2025-8-24 21:05:47

      自动搬运

      查看原文

      来自洛谷,原作者为

      avatar Meng142857
      AFOed,暂时回坑OI

      搬运于2025-08-24 21:05:46,当前版本为作者最后更新于2021-07-10 21:54:38,作者可能在搬运后再次修改,您可在原文处查看最新版

      自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

      以下是正文


      本蒟蒻的一篇题解

      此题为模拟题,只需删去最大最小值,然后按题意模拟即可
      AC代码如下,请勿抄袭(话说谁抄这种题的题解):

      #include<iostream>
      #include<cstdio>
      #include<cmath>
      using namespace std;
      double a[520],sum,minn=99999999,maxn=-1,maxi,mini,maxd=-1;
      int main(){
      	int n;
      	cin>>n;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      		minn=min(minn,a[i]);
      		if(a[i]==minn){mini=i;}//确定最大值 
      		maxn=max(maxn,a[i]);
      		if(a[i]==maxn){maxi=i;}//确定最小值 
      		sum+=a[i];
      	}
      	sum-=minn+maxn;
      	printf("%.2lf ",sum/(n-2));
      	for(int i=1;i<=n;i++){
      		if(i!=mini&&i!=maxi){//排除最大最小值 
      			maxd=max(maxd,fabs(a[i]-sum/(n-2)));
      		}
      	}
      	printf("%.2lf",maxd);
      	return 0;
      } 
      
      • 1

      信息

      ID
      6952
      时间
      1000ms
      内存
      128MiB
      难度
      1
      标签
      递交数
      2
      已通过
      2
      上传者