#P1721. [NOI2016] 国王饮水记

    ID: 689 Type: RemoteJudge 2000ms 250MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>动态规划,dp2016NOISpecial Judge斜率优化

[NOI2016] 国王饮水记

题目描述

跳蚤国有 nn 个城市,伟大的跳蚤国王居住在跳蚤国首都中,即 11 号城市中。

跳蚤国最大的问题就是饮水问题,由于首都中居住的跳蚤实在太多,跳蚤国王又体恤地将分配给他的水也给跳蚤国居民饮用,这导致跳蚤国王也经常喝不上水。

于是,跳蚤国在每个城市都修建了一个圆柱形水箱,这些水箱完全相同且足够高。一个雨天后,第 ii 个城市收集到了高度为 hih_i 的水。由于地理和天气因素的影响,任何两个不同城市收集到的水高度互不相同。

跳蚤国王也请来蚂蚁工匠帮忙,建立了一个庞大的地下连通系统。跳蚤国王每次使用地下连通系统时,可以指定任意多的城市,将这些城市的水箱用地下连通系统连接起来足够长的时间之后,再将地下连通系统关闭。由连通器原理,这些城市的水箱中的水在这次操作后会到达同一高度,并且这一高度等于指定的各水箱高度的平均值。

由于地下连通系统的复杂性,跳蚤国王至多只能使用 kk 次地下连通系统。

跳蚤国王请你告诉他,首都 11 号城市水箱中的水位最高能有多高?

输入格式

输入的第一行包含三个正整数 n,k,pn,k,p 分别表示跳蚤国中城市的数量,跳蚤国王能使用地下连通系统的最多次数,以及你输出的答案要求的精度。pp 的含义将在输出格式中解释。

接下来一行包含 nn 个正整数,描述城市的水箱在雨后的水位。其中第 ii 个正整数 hih_i 表示第 ii 个城市的水箱的水位。保证 hih_i 互不相同,1hi1051 \leq h_i \leq 10^5

输出格式

仅一行一个实数,表示 11 号城市的水箱中的最高水位。

这个实数只可以包含非负整数部分、小数点和小数部分。其中非负整数部分为必需部分,不加正负号。若有小数部分,则非负整数部分与小数部分之间以一个小数点隔开。若无小数部分,则不加小数点。

你输出的实数在小数点后不能超过 2p2p 位,建议保留至少 pp 位。数据保证参考答案与真实答案的绝对误差小于 102p10^{-2p}

你的输出被判定为正确当且仅当你的输出与参考答案的绝对误差小于 10p10^{-p}

如果你的输出与参考答案的绝对误差不小于 10p10^{-p} 但小于 10510^{-5},你可以获得该测试点 40%40\% 的分数。

3 1 3
1 4 3
2.666667
3 2 3
1 4 3
3.000000

提示

样例解释 1

由于至多使用一次地下连通系统,有以下五种方案:

  1. 不使用地下连通系统:此时 11 号城市的水箱水位为 11
  2. 使用一次连通系统,连通 1122 号:此时 11 号城市的水箱水位为 5/25/2
  3. 使用一次连通系统,连通 1133 号:此时 11 号城市的水箱水位为 22
  4. 使用一次连通系统,连通 2233 号:此时 11 号城市的水箱水位为 11
  5. 使用一次连通系统,连通 112233 号:此时 11 号城市的水箱水位为 8/38/3

样例解释 2

此时最优方案为使用两次连通系统,第一次连通 1,31,3 号,第二次连通 1,21,2 号。

样例 3

详见附加文件。

提示

为保证答案精度,我们一般需要尽可能地在运算过程中保留超过 pp 位小数。我们可以证明,在各个子任务的参考算法中都能保证,在任何时候始终保留 65p\frac{6}{5}p 位小数时,对任何输入得到的输出,与参考答案的绝对误差都小于 10p10^{-p}

为了方便选手处理高精度小数,我们提供了定点高精度小数类。选手可以根据自己的需要参考与使用该类,也可以不使用该类。其具体的使用方法请参考下发的文档 decimal.pdf(见附件)。

数据范围

测试点编号 nn kk pp
1 2\le 2 5\le 5 =5=5
22 4\le 4
33
4 10\le 10 =1=1
55 =109=10^9
66 10\le 10
77
88 100\le 100 =1=1
99 =109=10^9 =40=40
1010 109\le 10^9
1111
1212
1313 250\le 250 =100=100
1414 500\le 500 =200=200
1515 700\le 700 =300=300
1616
1717
1818 2500\le 2500 =1000=1000
1919 4000\le 4000 =1500=1500
2020 8000\le 8000 =3000=3000