1 #include
2 #include
3 #include
4 #include
5 #define N 50050
6 using namespace std;
7 double num[N];
8 double s1[N], s2[N];
9 int main(){
10 int n, t, k;
11 scanf("%d", &t);
12 while(t--){
13 scanf("%d%d", &n, &k);
14 for(int i=1; i<=n; ++i)
15 scanf("%lf", &num[i]);
16 sort(num+1, num+n+1);//对星球的位置排一下序
17 for(int i=1; i<=n; ++i)//分别计算前缀num[i] 的和 以及 num[i]^2的和
18 s1[i] = s1[i-1] + num[i], s2[i] = s2[i-1] + num[i]*num[i];
19 int m = n-k;
20 double ans = 1000000000000000000.0;//ans要足够大.... 最好不用long long,可能会超....
21 for(int i=1; m && i+m-1<=n; ++i){
22 int j = i+m-1;
23 double d = (s1[j] - s1[i-1])/m;
24 double tmp = s2[j] - s2[i-1] - 2*d*(s1[j] - s1[i-1]) + m*d*d;
25 if(ans > tmp) ans = tmp;
26 }
27 if(n == k) ans = 0.0;
28 printf("%.9lf\n", ans);
29 }
30 return 0;
31 }