P5602 小E与美食(贪心)

mac2026-03-30  8

传送门

显然我们可以把满足感排个序,然后从大到小吃,每次取max就好了,注意精度 code:

#include <iostream> #include <cstdio> #include <cctype> #include <iomanip> #include <algorithm> #define ll long long inline int read() { int f=1,sum=0;char c=getchar(); while (!isdigit(c)) {if (c=='-') f=-1;c=getchar();} while (isdigit(c)) {sum=sum*10+c-'0';c=getchar();} return sum*f; } inline ll readl() { ll f=1,sum=0;char c=getchar(); while (!isdigit(c)) {if (c=='-') f=-1;c=getchar();} while (isdigit(c)) {sum=sum*10+c-'0';c=getchar();} return sum*f; } int n,a[300040]; long double up=0.00; long double ans=-999.999,now=0.00; bool cmp(int x,int y) { return x>y; } using namespace std; int main() { n=read(); for(int i=1;i<=n;i++) { a[i]=read(); } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) { up+=a[i]; now=up/(long double)i*up; ans=max(now,ans); } cout<<fixed<<setprecision(8)<<ans; return 0; }
最新回复(0)