UVA1456 Cellular Network

题目描述

手机在蜂窝网络的定位是一个基本问题。假设蜂窝网络已经得知手机处于 $c_1, c_2,c_3,……,c_n$ 这 $n$ 个区域中的一个,最简单的方法是同时在这些区域中寻找手机,但这样很浪费带宽。由于蜂窝网络可以得知手机在不同区域内出现的概率,因此一个折中的方案是把这些区域分成 $w$ 组,然后一次访问。比如,一直手机可能位于 $5$ 个区域中,概率分别为 $0.3,0.05,0.1,0.3,0.25$,则一种方法是先同时访问 $\{c_1,c_2,c_3\}$,再同时访问 $\{c_4,c_5\}$,访问区域数量的期望为 $3 \times (0.3 + 0.05 + 0.1) + (3 + 2) \times (0.3 + 0.25) = 4.1$。而另一种方法是先同时访问 $\{c_1,c_4\}$,再访问 $\{c_2,c_3,c_5\}$,访问区域数量的期望为 $2 \times (0.3 + 0.3) + (3 + 2) \times (0.05 + 0.1 + 0.25) = 3.2$。你的任务是求出访问区域数量的期望的最小值。

输入格式

第一行为一个整数 $T$,表示数据组数。 每组数据第一行为两个整数 $n,w​$。含义如题面所述。 每组数据第二行为 $n$ 个正整数 $u_1,u_2,u_3,……,u_n$。手机再区域 $c_i$ 的概率 $p_i = \frac{u_i}{\sum\limits_{j = 1}^n u_j}$。

输出格式

对于每组数据,输出访问区域数量的期望的最小值。 ### 输入样例 ``` 2 5 2 30 5 10 30 25 5 5 30 5 10 30 25 ``` ### 输出样例 ``` 3.2000 2.3000 ```