刚开始以为比较难,其实发现还挺简单的。。。

首先:

吃下一个美味值

这句话不要理解成吃第二个美味值为ai的才增加满足感。

解决了这个问题就发现题目变得简单了,吃同样多的食物肯定优先吃满足感大的。

所以只需要先排个序,然后从大往小吃就行了

code:

#include<cstdio>
#include<algorithm>
using namespace std;
double a[300005];
int main()
{
	int n;
	double sum=0,flag=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lf",&a[i]);
	// if(a[i]!=a[i-1]&&i!=1)
	// flag=1;
	// sum+=a[i];
	}
	double m=n;
	/*if(flag==0) { printf("%.8lf\n",sum*sum/m); } else {*/
	double cnt=0;
		double ans=0;
		sort(a+1,a+n+1); 
		for(int i=n;i>=1;i--)
		{
			sum+=a[i];
			cnt++;
			if(sum*sum/cnt>ans)
			{
				ans=sum*sum/cnt;
			}
		}
		printf("%.8lf\n",ans);
	//} 
	return 0;
}