题意给你n个数在其中取n1个和n2个,求他们的平均数之和
贪心思想,取尽量大的数,取尽量少的数,这样平均数就小
所以排序后先取少量再取大量,求平均求和就可以了
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
bool com(double a,double b)
{
return a>b;
}
int main()
{
int n;
double k,l;
double a[100050];
scanf("%d%lf%lf",&n,&k,&l);
for(int i=0;i<n;i++)
scanf("%lf",&a[i]);
sort(a,a+n,com);
if(k>l)
{
double t=l;
l=k;
k=t;
}
double sumk=0,suml=0;
for(int i=0;i<k;i++)
sumk+=a[i];
for(int i=k;i<k+l;i++)
suml+=a[i];
double sum=(sumk/k)+(suml/l);
printf("%.8lf\n",sum);
}