洛谷 P5738歌唱比赛 题解

这次我们认真地(?)来写一篇题解

一半经验

我们先来看一下之前那题的代码:

#include
using namespace std;
int main()
{
	int n;
	double sum=0,ave;
	cin>>n;
	int a[1000];
	for(int i=0;i<=n-1;i++) 
	{
		cin>>a[i];
		sum+=a[i];
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=0;i<=n-2;i++) 
			if(a[i]>a[i+1]) swap(a[i],a[i+1]);
	}
	ave=(sum-a[0]-a[n-1])/(n-2);
	cout<

很显然,两题中要求的算分方法是一样的,都是去掉一个最高分和一个最低分然后求平均值。但是开一个数组来保存选手们的分数其实没有必要,我们可以逐个地算,然后打擂台比大小

AC  Code:

#include
using namespace std;
int main()
{
	double max=0,temp,sum;
	int n,m;
	cin>>n>>m;
	double a[m];
	for(int i=1;i<=n;i++)
	{
		for(int k=0;k<=m-1;k++) 
		{
			cin>>a[k];
			sum+=a[k];
		}
		sort(a,a+m);
		temp=(sum-a[0]-a[m-1])/(m-2);
		if(temp>max) max=temp;
		sum=0;
	}
	cout<

因为作者非常糟糕,所以若有不足请在评论区中指出。 

你可能感兴趣的:(题解,算法,c++)