P5602 小E与美食 题解

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

首先:

吃下一个美味值

这句话不要理解成吃第二个美味值为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;
}
发布了376 篇原创文章 · 获赞 157 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/kkkksc03/article/details/102778995