P17651 [IO 2025 #1] 避难所
题目描述
一根绷紧的丝线横跨法鲁姆,$n$ 个小居民住在这根丝线上。第 $i$ 个居民位于坐标 $x_i$。需要在线上设置一些茧,作为他们的避难所。
设置好茧之后,每个居民都会前往距离自己最近的避难所。也就是说,若这些茧的坐标为 $a_1,\ldots,a_k$,则对每个 $x_i$,选择使 $|x_i-a_{j_i}|$ 最小的 $j_i$。这组茧的**危险程度**定义为 $D=\max_{i=1}^n|x_i-a_{j_i}|$,即居民到最近避难所的距离的最大值。
黄蜂收到 $q$ 项相互独立的委托。每项委托指定:
- 一个整数 $k$,表示最终需要在线上设置的茧状避难所总数;
- 一个整数 $r$ 和一组坐标 $a_1,\ldots,a_r$,表示其中 $r$ 个避难所已经确定的位置。
她需要再在线上的任意位置添加 $k-r$ 个避难所,使最终的危险程度尽可能小。新避难所的坐标不必是整数。
对每项委托,求最终危险程度的最小可能值。各项委托互不影响。
输入格式
输入包含多组数据。第一行包含一个整数 $t$,表示数据组数,满足 $1\le t\le5000$。接下来依次给出各组数据。
每组数据的第一行包含两个整数 $n,q$,分别表示居民数和委托数,满足 $1\le n,q\le35000$。
第二行包含 $n$ 个整数 $x_i$,表示居民的坐标,满足 $|x_i|\le10^8$。
接下来 $q$ 行描述各项委托。每行依次包含整数 $k,r,a_1,\ldots,a_r$,其中 $k$ 是最终的避难所总数,$r$ 是已经确定位置的避难所数,$a_j$ 是这些避难所的坐标,满足 $1\le k\le35000$,$0\le r\le k$,$|a_j|\le10^8$。
保证所有数据组的 $n\cdot q$ 之和不超过 $35000$,所有委托的 $r$ 之和不超过 $35000$。
输出格式
对每组数据输出一行,包含 $q$ 个实数,依次表示各项委托的答案。如果某个输出答案与标准答案之间的绝对误差或相对误差不超过 $10^{-9}$,则认为该答案正确。
说明/提示
对于第一组数据:
1. 第一个委托只需要设置一个避难所,应将它放在最左、最右两个居民的位置 $-5$ 和 $11$ 的中点。这两个居民到避难所的距离均为 $8$。
2. 第二个委托可以将两个避难所分别放在 $-5$ 与 $0$ 的中点,以及 $4$ 与 $11$ 的中点。
3. 第三个委托可以将避难所放在 $-3$、$2$ 和 $10$。
4. 第四个委托只需在每个居民的位置设置一个避难所。
5. 第五个委托只需将第二个避难所设置在坐标 $10$ 和 $11$ 的居民附近,此时最大的距离是坐标 $-5$ 的居民到坐标 $0$ 的避难所的距离。
6. 第六个委托可以在坐标 $10$ 和 $11$ 附近添加一个避难所,并在坐标 $-2.5$ 添加另一个。