#HK4786. 「RMI 2019」Santa Claus

「RMI 2019」Santa Claus

题目描述

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

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

在一个城市里,有一条路上分布着 NN 座房子,编号从 11 到 NN。对于每座房子 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),然后向左走,直到某个位置 xLefti≤XixLeft_i\leq X_i。沿途:

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

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

输入格式

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

每组输入数据第一行包含一个整数 NN (1≤N≤96068)(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 (0≤Hi≤1)(0 \leq H_i \leq 1)。

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

所有输入数据组的 NN 值的总和不超过 5⋅1055\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 1≤N≤841 \leq N \leq 84
22 1010 1≤N≤1691 \leq N \leq 169
33 1010 1≤N≤13791 \leq N \leq 1379
44 1010 1≤N≤27091 \leq N \leq 2709
55 1010 1≤N≤55621 \leq N \leq 5562
66 1010 1≤N≤131231 \leq N \leq 13123
77 1010 1≤N≤275991 \leq N \leq 27599
88 1010 1≤N≤416461 \leq N \leq 41646
99 1010 1≤N≤950451 \leq N \leq 95045
1010 1010 1≤N≤960681 \leq N \leq 96068