桶排序
测试数据比较弱吧
题目描述
现在有 n(n≤1000) 位评委给选手打分,分值从 0 到 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 位小数。
输入格式
无
输出格式
无
输入输出样例
输入
5
9 5 6 8 9
输出
7.67
#pragma GCC optimize(3,"Ofast")
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
double per=0;
cin>>n;
double all[n]={0},judge[11]={0};
for(int i=0;i<n;i++){
cin>>all[i];
}
for(int i=0;i<11;i++){
for(int j=0;j<n;j++){
if(all[j]==i){
judge[i]++;
}
}
}
for(int i=0;i<11;++i){
if(judge[i]==0){
continue;
}
else{
judge[i]--;
break;
}
}
for(int i=10;i>=0;i--){
if(judge[i]==0){
continue;
}
else{
judge[i]--;
break;
}
}
for(int i=0;i<=10;i++){
per+=i*judge[i];
}
per/=(n-2);
printf("%.2lf",per);
return 0;
}

本文深入探讨了桶排序算法的应用场景,特别是在处理评委打分场景中,如何通过桶排序有效去除最高和最低分,最终计算选手平均得分的过程。文章提供了详细的算法实现代码,包括初始化变量、读取输入、进行排序及计算平均值等关键步骤。
505





