loj#P4786. 「RMI 2019」圣诞老人

「RMI 2019」圣诞老人

题目描述

题目译自 Romanian Master of Informatics 2019 Day2 T3 「Santa Claus

众所周知,每逢平安夜,圣诞老人的任务就是从精灵那里拿到礼物,分发给孩子们,为他们带来欢乐与幸福。

在一个城市里,有一条路上分布着 NN 座房子,编号从 11NN。对于每座房子 ii,我们给出三个整数 Xi,Hi,ViX_i, H_i, V_i,其中 XiX_i 是第 ii 座房屋在路上的位置。如果 Hi=0H_i=0,则第 ii 座房屋中有一个精灵,带着一份价值为 ViV_i 的礼物。如果 Hi=1H_i=1,则第 ii 座房屋中有一个孩子,期待收到一份价值至少为 ViV_i 的礼物。

任务包含 NN 个场景。在第 ii 个场景中,圣诞老人从坐标 00 进入城市,背着一个空礼袋。他先向右走,直到到达第 ii 座房子(坐标为 XiX_i),然后向左走,直到某个位置 xLeftiXixLeft_i\leq X_i。沿途:

  • 经过未拜访过的精灵房子时,他会拿起礼物放进礼袋;
  • 经过未收到礼物的孩子房子时,他可以(但不必须)从礼袋中选一份礼物送给孩子,并将其从袋中移除,前提是礼物的价值不低于孩子要求的 ViV_i

在第 ii 个场景中,圣诞老人行走的总距离为 Di=2XixLeftiD_i = 2X_i- xLeft_i。你的任务是找出每个场景中,圣诞老人分发所有精灵礼物所需的最短距离 DiD_i。注意,有些孩子可能收不到礼物,这没关系,只要所有礼物都分发出去,且每个孩子最多收到一份礼物。如果不存在这样的 DiD_{i},则令 Di=1D_{i}=-1。特别地,对于圣诞老人无法到达所有精灵房屋的情况,则 Di=1D_i=-1

输入格式

输入包含多组数据。第一行包含一个整数 TT (1T10)(1 \leq T\leq 10),表示测试数据的组数。

每组输入数据第一行包含一个整数 NN (1N96068)(1 \leq N \leq 96068),表示城市中的房屋数量。

第二行包含 NN 个整数 X1,X2,,XNX_1, X_2, \ldots, X_N $(0 \leq X_{1} \leq X_{2} \leq \ldots \leq X_N \leq 10^9)$。

第三行包含 NN 个整数 H1,H2,HNH_1,H_2,\ldots H_N (0Hi1)(0 \leq H_i \leq 1)

第四行包含 NN 个整数 V1,V2,VNV_1,V_2,\ldots V_N (0ViN)(0 \leq V_i \leq N)

所有输入数据组的 NN 值的总和不超过 51055\cdot 10^5

输出格式

对于每组输入数据,输出一行 NN 个整数 D1,D2,,DND_{1}, D_{2}, \ldots, 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

在样例 1 中,有 88 座房子。 第 2,3,42, 3, 4 座房子住着精灵,礼物价值分别为 2,3,32, 3, 3;第 55 座房子住着一个孩子,期待价值为 55 的礼物。由于精灵没有这样的礼物,这个孩子不会收到礼物。

  • 场景 1,2,31, 2, 3:圣诞老人未能访问所有精灵,D1=D2=D3=1D_1=D_2=D_3=-1
  • 场景 4,5,64, 5, 6:圣诞老人未遇到足够的孩子接受他的 3 份礼物,D4=D5=D6=1D_4=D_5=D_6=-1
  • 场景 77:圣诞老人需返回到第一座房子(xLeft7=10xLeft_7 = 10)以分发所有 3 份礼物,D7=40D_7 = 40
  • 场景 88:圣诞老人无需返回(xLeft8=X8=40xLeft_8 = X_8 = 40),即可分发所有礼物,D8=35D_8 = 35
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 1010 1N841 \leq N \leq 84
22 1010 1N1691 \leq N \leq 169
33 1010 1N13791 \leq N \leq 1379
44 1010 1N27091 \leq N \leq 2709
55 1010 1N55621 \leq N \leq 5562
66 1010 1N131231 \leq N \leq 13123
77 1010 1N275991 \leq N \leq 27599
88 1010 1N416461 \leq N \leq 41646
99 1010 1N950451 \leq N \leq 95045
1010 1010 1N960681 \leq N \leq 96068