QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 256 MB مجموع النقاط: 100

#92. 圣诞老人

الإحصائيات

圣诞老人

众所周知,在平安夜,圣诞老人的工作是从精灵那里领取礼物并送给孩子们,为他们的心中带去欢乐与幸福。

在城市中,沿路有 $N$ ($1 \le N \le 96\,068$) 座房屋,编号从 $1$ 到 $N$。 对于每座房屋 $i$,我们已知以下信息: $X_i$ ($0 \le X_1 \le X_2 \le \dots \le X_N \le 1\,000\,000\,000$); $H_i$ ($0 \le H_i \le 1$); * $V_i$ ($0 \le V_i \le N$)。

$X_i$ 是第 $i$ 座房屋沿路的坐标。如果 $H_i = 0$,则第 $i$ 座房屋里有一位精灵,拥有一个价值为 $V_i$ 的礼物。如果 $H_i = 1$,则第 $i$ 座房屋里有一个孩子,正在等待一个价值至少为 $V_i$ 的礼物。

共有 $N$ 种场景。在第 $i$ 种场景中,圣诞老人从坐标 $0$ 进入城市,带着一个空的礼物袋。他首先向右移动直到到达第 $i$ 座房屋(位于坐标 $X_i$),然后向左移动直到到达某个位置 $XLeft_i \le X_i$。每当圣诞老人经过一个他尚未访问过的精灵的房屋时,他就会拿走礼物并放入袋中。每当圣诞老人经过一个尚未收到礼物的孩子的房屋时,他可以(但不一定要!)从袋中挑选一个礼物交给孩子,并将其从袋中移除。这只有在所选礼物的价值至少等于孩子要求的最小价值 $V_i$ 时才能完成。

在第 $i$ 种场景中,圣诞老人行进的距离为 $D_i = 2X_i - XLeft_i$。对于每个场景,你的任务是找到圣诞老人为了分发所有精灵的礼物而必须行进的最小距离 $D_i$。注意,可能存在某些孩子没有收到任何礼物的情况——只要所有礼物都已分发且没有孩子收到超过一个礼物,这是可以接受的。如果不存在这样的 $D_i$,则取 $D_i = -1$。特别注意,对于圣诞老人无法到达所有精灵房屋的场景,情况总是如此。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 10$),表示需要解决的测试用例数量。 接下来是 $T$ 个测试用例的描述。每个测试用例包含四行: 第一行包含一个整数 $N$,表示城市中的房屋数量。 第二行包含 $N$ 个整数:$X_1, X_2, \dots, X_N$。 第三行包含 $N$ 个整数:$H_1, H_2, \dots, H_N$。 第四行包含 $N$ 个整数:$V_1, V_2, \dots, V_N$。

所有测试用例中 $N$ 的总和不超过 $500\,000$。

输出格式

对于每个测试用例,输出一行,包含 $N$ 个整数:$D_1, D_2, \dots, D_N$。

子任务

(1) $1 \le N \le 84$ (10 分) (2) $1 \le N \le 169$ (10 分) (3) $1 \le N \le 1\,379$ (10 分) (4) $1 \le N \le 2\,709$ (10 分) (5) $1 \le N \le 5\,562$ (10 分) (6) $1 \le N \le 13\,123$ (10 分) (7) $1 \le N \le 27\,599$ (10 分) (8) $1 \le N \le 41\,646$ (10 分) (9) $1 \le N \le 95\,045$ (10 分) (10) $1 \le N \le 96\,068$ (10 分)

样例

输入 1

2
8
10 11 12 13 14 16 25 35
1 0 0 0 1 1 1 1
2 2 3 3 5 1 1 1
16
10 11 12 13 14 15 16 17 18 19 20 23 24 31 33 37
1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1
2 1 7 3 1 10 10 6 5 5 1 6 1 10 8 2

输出 1

-1 -1 -1 -1 -1 -1 40 35
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 24 31 33 37

输入 2

2
9
1 2 3 4 15 16 17 18 19
0 0 1 1 1 0 0 1 1
5 7 4 1 2 3 1 6 2
9
1 2 3 4 15 16 17 18 19
0 0 1 1 1 0 0 1 1
5 7 4 1 2 3 1 6 1

输出 2

-1 -1 -1 -1 -1 -1 -1 32 34
-1 -1 -1 -1 -1 -1 -1 32 23

说明

在第一个输入样例的第一个测试中,共有 $8$ 座房屋。 第 $2, 3, 4$ 座房屋里有 $3$ 位精灵,分别拥有价值为 $2, 3, 3$ 的礼物。 第 $5$ 座房屋里有一个孩子,期待价值为 $5$ 的礼物。由于圣诞老人无法从任何精灵那里获得这样的礼物,该孩子将收不到礼物。 在场景 $1, 2, 3$ 中,圣诞老人没有访问所有精灵,因此 $D_1 = D_2 = D_3 = -1$。 在场景 $4, 5, 6$ 中,圣诞老人没有访问足够多能接受他 $3$ 个礼物的孩子,因此 $D_4 = D_5 = D_6 = -1$。 在场景 $7$ 中,圣诞老人需要返回到第一座房屋 ($XLeft_7 = 10$) 才能分发所有 $3$ 个礼物,因此 $D_7 = 40$。 在场景 $8$ 中,圣诞老人根本不需要返回 ($XLeft_8 = X_8 = 40$) 即可分发所有 $3$ 个礼物,因此 $D_8 = 35$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.