刚开始以为比较难,其实发现还挺简单的。。。
首先:
吃下一个美味值
这句话不要理解成吃第二个美味值为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;
}