样例过了但是全WA!求调QAQ(有注释+玄关)
查看原帖
样例过了但是全WA!求调QAQ(有注释+玄关)
1005753
sxjsxj楼主2023/9/3 08:51
#include<cmath>
#include<cstdio>
#include<algorithm>
int i,j,n,k,f[27][27],r[27],sum,k1;
struct node
{
	int s;
	char c;
}a[1001];
bool cmp(node x,node y)
{
	if(x.s==y.s) 
		return x.c<y.c;
	return x.s>y.s;
	//如果分数一样序号小的排前面,否则分数大的在前面 
}
main()
{
	scanf("%d %d",&n,&k);
	for(i=1;i<=n;i++)
		scanf("%d %c",&a[i].s,&a[i].c);
	///输入 
	for(i=1;i<=k;i++)
		for(j=1;j<=k;j++)
			scanf("%d",&f[i][j]);
	//还是输入 
	for(i=1;i<=k;i++)
	{
		sum=0,k1=k; 
		//sum是i队未剔除差别大于15分的评分前的平均分,
		//k1是剔除差别大于15分的评分后计入有效平均分的人数 
		for(j=1;j<=k;j++)
			sum+=f[j][i];
		//累加,由于每一对的人数都是一列一列算的,所以要用f[j][i]累加 
		sum=round(sum/k);
		//计算平均分 
		for(j=1;j<=k;j++)
			if(abs(sum-f[j][i])<=15)
			//如果这个分数与平均分相差小于15分,计入有效平均分 
				r[i]+=f[j][i];
			else
				k1--;
			//否则人数减一 
		r[i]=round(r[i]/k1);
		//再计算一次平均分 
	}	
	for(i=1;i<=n;i++)
		a[i].s=round(0.6*a[i].s)+round(r[a[i].c-'A'+1]*0.4);
	//计算每个人的得分 
	std::sort(a+1,a+1+n,cmp);
	//排序 
	for(i=1;i<=n;i++)
		printf("%d %c\n",a[i].s,a[i].c);
	//输出 
}
2023/9/3 08:51
加载中...