题解 P5602 【小E与美食】

ShineEternal

2019-10-28 12:25:39

Solution

[好东西](https://blog.csdn.net/kkkksc03/article/details/102778995) 刚开始以为比较难,其实发现还挺简单的。。。 首先: >吃下一个美味值 这句话不要理解成吃第二个美味值为ai的才增加满足感。 解决了这个问题就发现题目变得简单了,吃同样多的食物肯定优先吃满足感大的。 所以只需要先排个序,然后从大往小吃就行了 ## code: ```cpp #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; } ```