7.16第一题“竞赛排名”
Description
文章图片
Input 输入文件为compe.in。文件的第一行为参赛总人数N(1<=N<=100),从第二行到第N行依次为编号1到编号N的选手的成绩,每行有8个0~100之间的整数,代表该选手的8项竞赛成绩xi1,xi2,。。。,xi8。同一行相邻两个数之间用一个空格符隔开。 Output 输出文件为compe.out。文件有N行,从第
一行到第N行依次为排名第1的选手的编号,排名第2的选手的编号……排名第N的选手的编号。
题解
直接模拟,注意n<=1000。
var
i,j,n,k:longint;
sum,avg,x,y:array[0..1000]of double;
f,p:array[0..1000,0..8]of double;
a:array[0..1000]of integer;
tot,l:real;
begin
assign(input,'compe.in');
reset(input);
read(n);
for i:=1to n do
begin
a[i]:=i;
for j:=1to 8do
begin
read(f[i,j]);
sum[i]:=sum[i]+f[i,j];
avg[j]:=avg[j]+f[i,j];
end;
end;
for j:=1to 8do
avg[j]:=avg[j]/n;
for i:=1to n do
for j:=1to 8 do
begintot:=0;
for k:=n downto 1do
tot:=tot+abs(f[k,j]-avg[j]);
if tot<>0then
p[i,j]:=(f[i,j]-avg[j])/tot*n;
end;
for i:=1to n do
begin
for j:=1to 3do
y[i]:=y[i]+p[i,j];
for j:=4to 8do
y[i]:=y[i]+0.8*p[i,j];
end;
for i:=1to n-1 do
for j:=i+1 to n do
begin
if(y[i]
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 开学第一天(下)
- jhipster|jhipster 升级无效问题
- 我要我们在一起(二)
- “精神病患者”的角度问题
- 画解算法(1.|画解算法:1. 两数之和)
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 新年第一部电影,一本满足
- 解决SpringBoot引用别的模块无法注入的问题