#P12636. 「OOI 2022 Day 2」平面拉伸

「OOI 2022 Day 2」平面拉伸

题目描述

伊戈尔非常热爱几何学,因此他购买了一个平面,上面标记了 nn 个点,第 ii 个点的坐标为 (xi,yi)(x_i, y_i)

观察这些点后,伊戈尔很快找到了距离最远的一对点。然而,这对他来说还不够,因此对于 qq 个数字 α1,α2,α3,,αq\alpha_1, \alpha_2, \alpha_3, \ldots, \alpha_q,他想知道如果将平面沿 xx 坐标拉伸 αj\alpha_j 倍后,点对之间的最大距离会变成多少。

更正式地,伊戈尔有 qq 个查询,在第 jj 个查询中,对于数字 αj\alpha_j,伊戈尔希望找到由 nn 个点组成的新点集(坐标为 (xiαj,yi)(x_i \cdot \alpha_j, y_i))中距离最远的两点之间的距离。请帮助伊戈尔回答这些查询。

输入格式

每个测试点包含多组输入数据。第一行包含两个整数 ttgg (1t250000,0g9)(1 \leq t \leq 250000, 0 \leq g \leq 9),分别表示输入数据的组数和子任务编号。接下来是各组数据的描述。

每组数据的第一行包含两个整数 nnqq (2n500000,1q500000)(2 \leq n \leq 500000, 1 \leq q \leq 500000),分别表示点的数量和查询的数量。

接下来的 nn 行描述点的坐标,每行包含两个整数 xix_iyiy_i (109xi,yi109)(-10^{9} \leq x_i, y_i \leq 10^{9}),表示第 ii 个点的坐标。保证每组数据中所有点的坐标各不相同。

接下来的 qq 行描述查询,每行包含一个实数 αj\alpha_j (1αj109)(1 \leq \alpha_j \leq 10^{9}),表示第 jj 个查询中 xx 坐标的拉伸系数。

NN 为所有数据组中 nn 的总和,QQ 为所有数据组中 qq 的总和。保证 N,Q500000N, Q \leq 500000

输出格式

对于每组输入数据,输出 qq 行,每行包含一个实数,即第 ii 个查询的答案。答案被认为是正确的,如果其绝对误差或相对误差不超过 10610^{-6}。更正式地,如果 aa 是你的答案,bb 是评委的答案,则应满足 abmax(b,1)106\frac{|a-b|}{\max(b,1)} \leq 10^{-6}

2 0
5 2
0 0
1 1
0 2
-1 3
0 4
1
2.5
8 4
0 0
6 11
7 13
4 14
0 15
-4 14
-7 13
-6 11
2
1
1.25
1.5

4.000000
5.385165
28.000000
15.000000
17.500000
21.000000

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 子任务依赖 备注
11 1212 ni10n_i \leq 10N2000N \leq 2000qi10q_i \leq 10Q2000Q \leq 2000 00
22 99 ni2000n_i \leq 2000N2000N \leq 2000qi2000q_i \leq 2000Q2000Q \leq 2000 010 \sim 1
33 1313 ni5000n_i \leq 5000N5000N \leq 5000qi10000q_i \leq 10000Q10000Q \leq 10000 020 \sim 2
44 1111 ni100000n_i \leq 100000N100000N \leq 100000qi100000q_i \leq 100000Q100000Q \leq 100000 随机点(坐标在 109-10^{9}10910^{9} 间均匀随机选择)
55 88 44
66 1212 ni5000n_i \leq 5000N5000N \leq 5000qi100000q_i \leq 100000Q100000Q \leq 100000 030 \sim 3
77 1111 ni5000n_i \leq 5000N5000N \leq 5000 03,60 \sim 3, 6
88 1010 ni100000n_i \leq 100000N100000N \leq 100000qi100000q_i \leq 100000Q100000Q \leq 100000 04,60 \sim 4, 6
99 1414 080 \sim 8