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