#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int dp[160][160];
int d[160],sum[160];
int main()
{
int T,n,k;
scanf("%d",&T);
while(T--)
{
int total=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
total+=d[i];
}
sort(d+1,d+n+1,cmp);
sum[0]=0;
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+d[i];
for(int i=1;i<=k;i++)
for(int j=1;j<=n;j++)
{
if(i==1)
{
dp[1][j]=sum[j]*j;
}
else
{
dp[i][j]=INF;
for(int k=1;k<j;k++)
dp[i][j]=min(dp[i][j],dp[i-1][k]+(sum[j]-sum[k])*j);
}
}
printf("%.4f\n",1.0*dp[k][n]/total);
}
}
LA 4731 DP+贪心
最新推荐文章于 2022-08-15 16:01:01 发布