#P11066. 【MX-X4-T6】「Jason-1」电梯

【MX-X4-T6】「Jason-1」电梯

题目描述

一栋 nn 层的楼有 mm 部电梯,每部电梯有静止与运动两种状态。

初始时,第 ii 部电梯静止于第 ii 层。给定一个 1m1 \sim m 的排列 pp,你希望最终第 ii 部电梯位于 pip_i 层。

你可以进行以下两种操作:

  • 0:让时间向后运动一个时刻。
  • x:其中 xx 为不超过 nn 的正整数。
    • 执行该操作时,需要满足:xx 层不存在静止的电梯;距离 xx 层距离最近的^\dagger 静止的电梯存在且唯一。
    • yy 为最近的静止的电梯编号,zz 为其位置。则电梯 yy 立刻变为运动的电梯,并在 xz\lvert x - z\rvert 时刻后的所有操作前到达楼层 xx 并变为静止的电梯。

^\dagger:位于 aa 层的一部电梯与楼层 xx 的距离为 ax\lvert a - x\rvert

注意:你需要保证,任何时刻不存在两个静止的电梯位于同一楼层。

对于每组数据,有一个评分参数 oo,你需要构造出总操作次数不超过 oo 的方案才能通过该组数据。

本题使用自定义校验器检验你的答案是否正确,因此若有多种满足条件的方案,你只需要输出任意一种

输入格式

本题输入包含多组数据。

第一行,一个正整数 TT,表示数据组数。对于每组数据:

  • 第一行,四个正整数 Q,n,m,oQ, n, m, o,分别表示询问组数、楼层数、电梯数、与评分参数。
  • 接下来 QQ 行,每行 mm 个整数 p1,,pmp_1, \ldots, p_m,表示电梯的目标位置。

输出格式

对于每组数据:

  • 2Q2 Q 行。对于每个询问,输出两行:
  • 第一行,一个非负整数 kk,表示你的方案的操作步数;
  • 第二行,kk[0,n][0, n] 中的整数,表示你的具体操作方案。

本题使用自定义校验器检验你的答案是否正确,因此若有多种满足条件的方案,你只需要输出任意一种

2
2 4 2 12
1 2
2 1
1 10 5 30
5 4 3 2 1
0

9
3 4 0 0 1 0 2 0 0
16
6 6 6 6 6 0 1 0 2 0 3 0 4 0 5 0
1
1 6 5 30
5 4 3 2 1

16
6 6 6 6 6 0 1 0 2 0 3 0 4 0 5 0

提示

【样例解释 #1】

该样例满足子任务 2 的限制。

对于第一组数据的第一组询问,不需要操作。

对于第一组数据的第二组询问:

操作 时刻 电梯 11 位置 电梯 22 位置
初始状态 00 11 22
33 运动
44 运动
00 11 33
22
11 运动
00 33 44
22 运动
00 44 11
55 22

【样例解释 #2】

该样例满足子任务 7 的限制。

【数据范围】

本题采用捆绑测试。

子任务 nn \le m=m = o=o = 分值
1 33 22 77
2 100100 n2\lfloor \frac{n}{2} \rfloor 2×(m+n)2\times(m+n) 1111
3 4040 n1n-1 3×n33 \times n^3 1717
4 200200 5×n25 \times n^2 1919
5 40004000 50×n50 \times n 1717
6 5×1045 \times 10^{4} 6×n6 \times n 1616
7 5×n5 \times n 1313

对于所有数据,1T201 \le T \le 202m<n5×1042 \le m < n \le 5 \times 10^{4},保证 n,m,on, m, o 同时满足上述某个子任务的限制,pp1m1 \sim m 的排列,1Q2×1061 \le Q \le 2\times 10^6oQ2×106\sum o Q \le 2 \times 10^6