Problem B: 合唱比赛开始了!
来源:互联网 发布:淘宝电商需要什么条件 编辑:程序博客网 时间:2024/05/16 10:13
Description
为迎接计算机科技文化节的到来,我院面向一年级学生举办了一场合唱比赛。邀请了若干位专家担任评委,并为每个参赛队评分。现在,请设计一个程序来展示这个比赛过程。
其中,类 Team描述了参赛队的信息,包括:专业名称、每个专家给该参赛队的评分以及最终得分等。类Contest描述了竞赛的信息,包括各个参赛队的列表,并提供
1. void Input()方法:用于输入所有参赛队的信息;
2. void Compute()方法:计算每个代表带队的最终得分。
3. void Show()方法:显示所有代表队的信息。
4. void Sort()方法:根据代表队的最终得分进行排序。
要求:
1. 假设有M个代表队参加比赛,有N个评委进行评分,且评分标准包括P项。
2. 每个评委将为每个代表队打出P个分项分,每项得分都在0~100之间,一个评委为一个代表队评出的最终分数是所给出的所有分项分的平均分。如:P=3,评委1给代表队x打的3个分数为100,90,80,则x代表队得到的来自于评委1的分数为(100+90+80)/3=90。
3. 每个代表队得到的最终分数是N个评委的给出的N个分数值,去掉1个最高分,1个最低分,剩余分数的平均值。如:经过上一步的计算,x代表队得到的来自N=4个评委的得分分别是100,90,80,70,则x代表队的最终得分是(90+80)/2=85。
Input
输入有多行。第一行分别输入M>1,N>3,P>0表示代表队数量、评委人数以及评分标准数。
之后分别输入M个代表的信息。每个代表队信息的第一行是队伍的专业名(10个字母以内),之后的N行是N个评委为该代表队打的分数,其每行有P个数,分别是该评委为该代表队打出的各个分项分。
Output
输出有M行,根据每个代表队的得分,按照从大到小的顺序输出。其中专业名称靠左输出,占11个字符,之后输出成绩。成绩输出2位小数。假定所有队伍的得分都不相同。
Sample Input
Sample Output
HINT
用left来让输出左对齐。
我的:
#include <bits/stdc++.h>using namespace std;class Contest{ public: int m,n,p;string s[10];double a[10][10][10],b[10][10];double c[10]; void Input(){ cin>>m>>n>>p; for(int k=0;k<m;k++){ cin>>s[k]; for(int i=0;i<n;i++){ b[k][i]=0; for(int j=0;j<p;j++){ cin>>a[k][i][j]; b[k][i]+=a[k][i][j]; } } } } void Compute(){ for(int i=0;i<m;i++){ for(int j=0;j<n;j++) b[i][j]=b[i][j]/p; sort(b[i],b[i]+n); c[i]=0; for(int k=1;k<n-1;k++) c[i]+=b[i][k]; c[i]=c[i]/(n-2); } } void Sort(){ double t;string ss; for(int i=0;i<m;i++){ for(int k=i+1;k<m;k++) if(c[i]>c[k]){ t=c[i];ss=s[i]; c[i]=c[k];s[i]=s[k]; c[k]=t;s[k]=ss; } } } void Show(){ for(int i=m-1;i>=0;i--){ cout<<setiosflags(ios::left)<<setw(11)<<s[i]; cout<<fixed<<setprecision(2)<<c[i]<<endl; } }};int main(){ Contest contest; contest.Input(); contest.Compute(); contest.Sort(); contest.Show(); return 0;}
别人的:
#include <iostream>#include <string>#include <iomanip>#include <algorithm>#include <cmath>#include <cstring>using namespace std;double sum[30]; class Team{friend class Contest;public: string majority; double score; double endrank;};bool cmp(Team a,Team b){ return a.endrank>b.endrank;}class Contest:public Team{friend class Team;public: Team s[100]; int m; void Input() { int n,p; cin>>m>>n>>p; for(int i=0;i<m;i++) { fill(sum,sum+m+1,0); int t; cin>>s[i].majority; for(int j=0;j<n;j++) { for(int k=0;k<p;k++) { cin>>t; sum[j]+=t; } sum[j]=sum[j]*1.0/p; } sort(sum,sum+n); double add=0; for(int l=1;l<n-1;l++) add+=sum[l]; s[i].endrank=add*1.0/(n-2); } } void Compute(){} void Sort(){} void Show() { sort(s,s+m,cmp); for(int i=0;i<m;i++) { cout<<setiosflags(ios::left)<<setw(11)<<s[i].majority<<fixed<<setprecision(2)<<s[i].endrank<<endl; } }};int main(){ Contest contest; contest.Input(); contest.Compute(); contest.Sort(); contest.Show(); return 0;}
- Problem B: 合唱比赛开始了!
- Problem B: 合唱比赛开始了!
- Problem B: 合唱比赛开始了!
- Problem C: 合唱比赛开始了!
- Problem C: 合唱比赛开始了!
- 合唱比赛
- 微软imagine cup 2008 比赛开始了
- Problem B: 选举班干部了!
- 世界游泳锦标赛的游泳比赛终于开始了
- 观看12.9合唱比赛:为了忘却的纪念
- 开始准备比赛
- 搜索比赛B题
- B - 确定比赛名次
- 选课,我选了舞蹈和合唱
- 他选歌太纠结了,有时临比赛开始的前一天才能
- 2014第十三届小金话筒奖比赛(简章)报名开始了
- 雕龙杯Revit中国用户BIM应用大赛开始了真正属于使用者的比赛
- 小菜鸟,开始准备飞思卡尔智能车比赛了。
- 仿QQ个人信息详情界面中背景图的下拉扩展放大功能
- Bash基本语法
- 运行hadoop的MapReduce示例,在Running job卡住
- 更改ORACLE归档路径及归档模式
- 0503
- Problem B: 合唱比赛开始了!
- 企业部署WAPI无线网络的技术详析
- 关于webStorm的实用的快捷键
- 求最大子矩阵的和
- 【HackerRank】【HourRank 20】Birjik and Nicole's Tree Game
- menu文件在actionbar中的用法
- 安卓集成极光推送经验总结
- PHP中的VC6,VC9,VC11,TS,NTS区别
- Linux 远程登录