想不到题目怎么办

B2095 白细胞计数

wushiyan @ 2024-01-06 15:15:49

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    double sus[110];
    double Max=INT_MIN,Min=INT_MAX,MI=0,MA=0,num;
    for(int i=0;i<n;i++)
    {
        cin>>sus[i];
        if(Max<sus[i]) Max=sus[i],MA=i;
        else if(Min>sus[i]) Min=sus[i],MI=i;
        num+=sus[i];
    }
    double sum=(num-Max-Min)*1.0/(n-2);
    printf("%.2f",sum);
    cout<<' ';
    double MAX=INT_MIN;
    for(int i=0;i<n;i++)
    {
        if((i==MI || i==MA)) continue;
        else
        {
            MAX=max(MAX,sus[i]);
        }
    }
    printf("%.2f",abs(sum-MAX));
    return 0;
}

代码↑↓记录

记录QWQ

求救


by 2021zjhs005 @ 2024-01-06 15:17:13

@wushiyan

RE 是因为你数组太小了,n\le 300,至少得 301

WA 的话我仔细看看。


by 2021zjhs005 @ 2024-01-06 15:25:38

@wushiyan

除了最大值和最小值,不一定是剩余的最大值和平均值最接近。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    double sus[310];
    double Max=INT_MIN,Min=INT_MAX,MI=0,MA=0,num;
    for(int i=0;i<n;i++)
    {
        cin>>sus[i];
        if(Max<sus[i]) Max=sus[i],MA=i;
        else if(Min>sus[i]) Min=sus[i],MI=i;
        num+=sus[i];
    }
    double sum=(num-Max-Min)*1.0/(n-2);
    printf("%.2f",sum);
    cout<<' ';
    double MAX=INT_MIN;
    for(int i=0;i<n;i++)
    {
        if((i==MI || i==MA)) continue;
        else
        {
            MAX=max(MAX,abs(sus[i]-sum));
        }
    }
    printf("%.2f",MAX);
    return 0;
}

by wushiyan @ 2024-01-06 15:27:13

@2021zjhs005 谢谢%%%


|