UVALive 7049 Galaxy

 

 

 1 #include<bits/stdc++.h>
 2 #define cl(a,b) memset(a,b,sizeof(a))
 3 using namespace std;
 4 
 5 const int maxn=5e4+10;
 6 
 7 int star[maxn],d[maxn];
 8 double d2[maxn];
 9 
10 int main()
11 {
12     int T;
13     scanf("%d",&T);
14     while(T--)
15     {
16         int n,k;
17         scanf("%d%d",&n,&k);
18         cl(star,0),cl(d,0),cl(d2,0);
19         for(int i=1;i<=n;i++)
20         {
21             scanf("%d",&star[i]);
22         }
23         sort(star+1,star+n+1);
24         for(int i=1;i<=n;i++)
25         {
26             d[i]=d[i-1]+star[i];
27             d2[i]=d2[i-1]+1.0*star[i]*star[i];
28         }
29         int l,r;
30         double ans=1e18,x;
31         if(n==k)
32         {
33             printf("0\n");
34             continue;
35         }
36         for(int i=1;i<=k+1;i++)
37         {
38             l=i,r=n-(k-i+1);
39             int tmpd=d[r]-d[l-1];
40             x=1.0*tmpd/(r-l+1);
41             ans=min(ans,d2[r]-d2[l-1]-2*x*tmpd+x*x*(r-l+1));
42         }
43         printf("%f\n",ans);
44     }
45     return 0;
46 }/*
47 
48 2
49 3 2
50 -1 0 1
51 4 2
52 -2 -1 1 2
53 
54 */

 

posted @ 2017-07-24 18:59  良将ℓ  阅读(155)  评论(0编辑  收藏  举报