P6363 [传智杯 #2 初赛] 软件工程实习

解题思路:首先用结构体记录每个队员的理论成绩和所在队伍,建立一个队伍总分数组和平均数数组和(与该队伍平均分差值在15分以内的人数数组),四舍五入的时候用round函数计算,然后一步一步根据题意算即可

#include<bits/stdc++.h>
using namespace std;
typedef struct stu{
	double a;//理论成绩
	char b;//所在队伍
}Stu;
bool cmp(Stu A,Stu B){
	if(A.a!=B.a)
	return A.a>B.a;
	if(A.b!=B.b)
	return A.b<B.b;
}
int main(){
	int n,m,h;
	cin>>n>>m;
	Stu stu[n];
	double sum[m];//每个队伍队伍总分
	double avg[m];//每个队伍平均分
	int index[m];//最后实际人数
	memset(index,0,sizeof(index));
	memset(avg,0,sizeof(avg));
	int x[m][m];
	for(int i=0;i<n;i++)
		cin>>stu[i].a>>stu[i].b;
	for(int i=0;i<m;i++){
		for(int j=0;j<m;j++){
			cin>>x[i][j];
			sum[j]+=x[i][j];//求每个队伍总分
		}
	}
	for(int i=0;i<m;i++)
		avg[i]=sum[i]/m;//求每个队伍平均分
	memset(sum,0,sizeof(sum));
	for(int i=0;i<m;i++){
		for(int j=0;j<m;j++){
			if(abs(avg[j]-x[i][j])<=15){
				sum[j]+=x[i][j];//去除掉后,实际队伍总分
				index[j]++;//实际队伍总人数
		}
	}
}
	for(int i=0;i<m;i++)
		avg[i]=round(sum[i]/index[i]);//实际队伍平均分
	for(int i=0;i<n;i++){
		stu[i].a=round(stu[i].a*0.6+avg[stu[i].b-'A']*0.4);//计算每个队员得分
	}
	sort(stu,stu+n,cmp);//排序
	for(int i=0;i<n;i++) 
		cout<<stu[i].a<<" "<<stu[i].b<<"\n";
}

运行结果:

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第六届传智杯B组初赛是传智播客举办的一次IT技术竞赛的初赛阶段,旨在选拔出各高校优秀的程序设计人才。该比赛中,参赛者将面临多道编程题目,通过编写程序解决问题来展示他们的技术水平和创新能力。 在初赛中,参赛者需要在规定的时间内完成多道程序设计题目。这些题目可能涉及数据结构、算法、网络通信等方面的知识,要求参赛者具备扎实的编程基础和解决实际问题的能力。 参赛者需要在规定的时间内完成编程题目,并提交给评委进行评分。评委会根据答案的正确性、效率、代码的可读性等方面对参赛者的作品进行综合评判。最终,得分高的参赛者将进入下一轮比赛。 第六届传智杯B组初赛的目的是为了选拔出具备优秀编程能力的学生,为他们提供一个展示才华、学习交流的平台。参赛者不仅可以通过比赛锻炼自己的编程技巧,还可以结识其他优秀的参赛者,相互学习、切磋技艺。 在比赛过程中,参赛者还可以通过与其他选手交流,了解各种不同的编程思路和解题方法,不断提高自己的编程水平。同时,参赛者还有机会与业界的专家学者进行交流,了解最新的技术动态和发展趋势。 总之,第六届传智杯B组初赛是一次很有意义的编程竞赛,为各大高校的IT人才选拔提供了一次难得的机会。通过比赛,参赛者可以展现自己的才华,提升技术水平,同时也可以与其他优秀选手进行交流,共同进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六弦绿漪。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值