luogu#P12091. [RMI 2019] 圣诞老人 / Santa Claus

[RMI 2019] 圣诞老人 / Santa Claus

题目描述

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

城市中有 NN 座房子在笔直的道路上。房子编号从 1N1\sim N

对于每座房子 ii,已知:

  • XiX_iXiX_i 表示第 ii 座房子沿道路的位置。
  • Hi{0,1}H_i\in \{0,1\}
  • ViV_i
    • 如果 Hi=0H_i = 0,则第 ii 座房子中有一个精灵,持有一个价值为 ViV_i 的礼物。
    • 如果 Hi=1H_i = 1,则第 ii 座房子中有一个孩子,正在等待一个最小价值为 ViV_i 的礼物。

共有 NN 个场景。在第 ii 个场景中,圣诞老人从坐标 00 进入城市,携带一个空的礼物袋。他首先向右移动,直到到达第 ii 座房子(位于坐标 XiX_i),然后向左移动,直到到达某个其他位置 XleftiXiX_{\text{left}_i} \leq X_i

  • 当圣诞老人经过一个精灵的房子且之前未访问过时,他会拿走礼物并放入袋中。
  • 当圣诞老人经过一个尚未收到礼物的孩子的房子时,他可以(但不必须)从袋中挑选一个当前存在的礼物交给孩子,并将该礼物从袋中移除。此操作仅在所选礼物的价值至少等于孩子指定的最小价值 VV 时才能完成。

在第 ii 个场景中,圣诞老人移动的总距离为 Di=2XiXleftiD_i = 2X_i - X_{\text{left}_i}。你的任务是:针对每个场景,找到圣诞老人分发所有精灵礼物所需的最小距离 DiD_i

  • 注意:允许某些孩子未收到礼物,但必须满足所有礼物已被分发,且每个孩子至多收到一个礼物。
  • 如果无法满足条件,则设 Di=1D_i = -1。特别地,若圣诞老人无法到达所有精灵的房子,则必然无法满足条件。

输入格式

本题单个测试点内有多组测试数据。

第一行输入包含一个整数 TT1T101 \leq T \leq 10),表示测试数据组数。

随后描述 TT 组数据。每组数据包含四行:

  • 第一行,一个整数 NN,城市中的房子数量。
  • 第二行, NN 个整数 X1,X2,,XNX_1, X_2, \dots, X_N
  • 第三行, NN 个整数 H1,H2,,HNH_1, H_2, \dots, H_N
  • 第四行, NN 个整数 V1,V2,,VNV_1, V_2, \dots, V_N

输出格式

每组数据,输出一行 NN 个整数:D1,D2,,DND_1, D_2, \dots, D_N

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 40 35
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 24 31 33 37
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
-1 -1 -1 -1 -1 -1 -1 32 34
-1 -1 -1 -1 -1 -1 -1 32 23

提示

样例解释

样例 11 解释

样例 11 第一组数据中,共有 88 座房子。第 223344 座房子中有 33 个精灵,分别持有价值为 223333 的礼物。

55 座房子中有一个孩子,期望获得价值为 55 的礼物。由于圣诞老人无法从任何精灵处获取满足此条件的礼物,该孩子将不会收到礼物。

  • 在场景 112233 中,圣诞老人未访问所有精灵的房子,因此 D1=D2=D3=1D_1 = D_2 = D_3 = -1
  • 在场景 445566 中,圣诞老人虽访问了精灵,但未找到足够多愿意接受其 33 份礼物的孩子,因此 D4=D5=D6=1D_4 = D_5 = D_6 = -1
  • 在场景 77 中,圣诞老人需要返回到第 11 座房子(XLeft7=10X_{\text{Left}_7} = 10)以分发全部 33 份礼物,因此 D7=40D_7 = 40
  • 在场景 88 中,圣诞老人完全无需折返(XLeft8=X8=40X_{\text{Left}_8} = X_8 = 40)即可分发所有 33 份礼物,因此 D8=35D_8 = 35

数据范围

对于 100%100\% 的数据,保证:

  • 1T101\le T\le 10
  • 1N960681\le N\le 96\, 068
  • 1N5×1051\le \sum N\le 5\times 10^5
  • 0X1X2XN1090\le X_1\le X_2\le \ldots\le X_N\le 10^9
  • Hi{0,1}H_i\in \{0,1\}
  • 0ViN0\le V_i\le N

子任务

编号 NN\le 分值
11 8484 1010
22 169169
33 13791\, 379
44 27092\, 709
55 55625\, 562
66 1312313\, 123
77 2759927\, 599
88 4164641\, 646
99 9504595\, 045
1010 9606896\, 068