ShineEternal的小书屋

ShineEternal的小书屋

https://blog.csdn.net/kkkksc03

题解 P5602 【小E与美食】

posted on 2019-10-28 12:25:39 | under 题解 |

好东西

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

首先:

吃下一个美味值

这句话不要理解成吃第二个美味值为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;
}