P6363 软件工程实习 传智杯赛题

题目链接:https://www.luogu.com.cn/problem/P6363

题目描述

某大学的《软件工程》必修课分为理论和实践部分。理论部分由该校教授完成授课;而实践部分是由第三方的公司主导,需要同学们在五周时间内自学 HTML、css、JavaScript、vue、Python、django 等技术,并组队完成一个真实的互联网商业应用。

参与这个课程的有n(0≤n≤1000)n(0\le n \le 1000)n(0≤n≤1000)个学生,分成了不超过262626个队伍,每个队伍用A到Z来表示。每个队伍都会完成一个项目,并以队伍为单位,给所有队伍(包括自己队伍)打分,范围是000到100100100的整数。

为了平息学生对这门课产生的出多问题的不满(比如工作量太大、时间过于紧张、考核方式不公平等),老师决定使用一种“看起来”很公平的方式来决定每组队伍的项目得分:

对于某个队伍,首先计算所有队伍(包括自己)给这个队伍评分的平均值,然后剔除掉和这个平均值差别超过151515分的评分(保证不会出现所有的评分全部被剔除的情况),最后再对剩余的评分求平均值,四舍五入取整后作为这个队伍的项目得分。

对于每一个同学,我们已经得知他们的队伍代号和理论成绩(也是000到100100100分的整数)。这位同学的最后得分就是60%60\%60%的理论成绩加上40%40\%40%的所在队伍的项目得分,然后四舍五入取整。

现在老师想知道所有同学的分数排行。请按最后得分从高到低的顺序,输出每位同学的得分和他所在的队伍。

输入格式

第一行两个整数nnn和kkk,分别表示学生数和队伍数。

接下来nnn行,每行一个整数sis_isi​和一个大写字母cic_ici​,表示第iii个选手的理论分数和队伍编号。保证队伍编号范围是从A开始后连续kkk个字母中的一个。

接下来kkk行,每行kkk个整数。其中第iii行第jjj列的整数ai,ja_{i,j}ai,j​表示第iii个队伍给第jjj个队伍的评分,当i=ji=ji=j时,就是自评。

输出格式

输出nnn行表示答案,得分高的同学优先输出,得分相同时队伍编号较小的同学优先输出。对于每一行,先输出这位同学成绩,然后输出代表他的队伍编号的大写英文字母。

输入输出样例

输入 #1

6 3

70 A

80 A

65 B

95 B

85 C

90 C

70 90 100

95 88 85

30 47 100

输出 #1

93 B

92 C

89 C

76 A

75 B

70 A

说明/提示

A 组收到的分数分别是70,95,3070,95,3070,95,30,其平均分为656565,则95,3095,3095,30被作为无效成绩剔除,因此 A 组的项目得分是707070分。

B 组收到的分数分别是90,88,4790,88,4790,88,47,其平均分为757575,则474747被作为无效成绩剔除,因此 B 组的项目得分是898989分。

C 组收到的分数分别是100,85,100100,85,100100,85,100,其平均分为959595,没有打分被剔除,因此 C 组的项目得分是959595分。

-----------------------------------------------------------------求助--------------------------------------------------------

有没有大佬能帮忙分析下哪里出了问题呀!!!!

代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

while(sc.hasNext()) {

int n=sc.nextInt();

int k=sc.nextInt();

long [][]lilun=new long[n][2];

int shijian[][]=new int[k][k];

long score[]=new long['Z'+1];//有效成绩

double avg;//每一组的平均分

double sum=0;

for(int i=0;i

lilun[i][0]=sc.nextInt();

String X=sc.next();

char []zm=X.toCharArray();

lilun[i][1]=zm[0];

}

for(int i=0;i

for(int j=0;j

shijian[i][j]=sc.nextInt();

}

}

for(int i=0;i

for(int j=0;j

sum+=shijian[j][i];

}

avg=sum/k;

int o=k;

for(int l=0;l

if(Math.abs(shijian[l][i]-avg)>15) {

sum-=shijian[l][i];

o--;

}

}

score[i+'A']=(int)Math.round(sum/o);

sum=0;

}

for(int i=0;i

int x= (int) Math.round((lilun[i][0]*0.6+score[(int)(lilun[i][1])]*0.4));

lilun[i][0]= x;

}

for(int i=0;i

for(int j=i;j

if(lilun[j][0]>lilun[i][0]) {

long temp=lilun[i][0];

lilun[i][0]=lilun[j][0];

lilun[j][0]=temp;

long temp1=lilun[i][1];

lilun[i][1]=lilun[j][1];

lilun[j][1]=temp1;

}

}

}

for(int i=0;i

System.out.print(lilun[i][0]+" "+(char)lilun[i][1]);

System.out.println();

}

}

}

}


--------始终就是AC不了:(

你可能感兴趣的:(P6363 软件工程实习 传智杯赛题)