白细胞计数

GitHub跳转原题关系图返回列表

题意与原解析均从本地 OpenJudge 缓存迁移。

OJ: noi_openjudge

题目 ID: ch0109-08

难度:未知

标签:数组模拟浮点数python

日期: 2026-07-30 23:01

题意

完整题面见同目录的 problem.md

思路

删除一个最大值和一个最小值后计算剩余样本平均值,再求其与平均值的最大绝对偏差。

代码

Python代码

python
sample_count = int(input())
samples = [float(input()) for _ in range(sample_count)]
samples.remove(max(samples))
samples.remove(min(samples))
average = sum(samples) / len(samples)
error = max(abs(sample - average) for sample in samples)
print(f"{average:.2f} {error:.2f}")

C++代码

cpp
#include <cstdio>
#include <cmath>


int n;
double a[1000];

double max = -1;
double min =  99999;
int main(){
    scanf("%d",&n);
    int i;
    double sum = 0;
    for (i=1;i<=n;i++){
        scanf("%lf",&a[i]);
        if( max < a[i])
            max = a[i];
        if( min > a[i])
            min = a[i];
        sum += a[i];
    }

    double  max2 = -1;
    sum -=(max+min);
    int cnt_max=0,cnt_min=0;
    double level = sum /(n-2);
    for (i=1;i<=n;i++){
        if(a[i] == max && cnt_max == 0) {
            cnt_max++;
            continue;
        }
        if(a[i] == min && cnt_min== 0) {
            cnt_min++;
            continue;
        }
        double ret = fabs(a[i]-level);
        if( ret > max2){
            max2 = ret;
        }

    }
    printf("%.2lf %.2lf",level,max2);
    return 0;
}

复杂度

总结