2 条题解
-
0
这是一道基础的 数据处理与统计计算 题目。我们需要对输入的浮点数进行排序,去除极值后计算平均值和误差。 解题思路 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
自动搬运
来自洛谷,原作者为

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
- 上传者