#6492. D:电梯调度 (Elevators)

D:电梯调度 (Elevators)

题目 D:电梯调度 (Elevators)

属性 规格
题目类型 提交答案题 (Output-only)
时间限制 N/A (线下计算)
内存限制 N/A
最大分值 100 分

题目描述

在新加坡参加 IOI 2020 期间,所有选手都住在一栋共有 KK 层(编号 1,2,,K1, 2, \dots, K)的大楼里。大楼安装了 NN 部电梯,每部电梯初始都在第 1 层。每部电梯在任何时刻最多只能载 PP 人。 电梯速度很快,移动 1 层需要 1 秒,选手开关门、上下电梯的时间忽略不计。

你决定通过编写代码控制电梯系统,以最小化所有选手从到达电梯口到被送达目标层的总等待时间之和

输入格式

  • 第一行:四个整数 N,P,K,CN, P, K, C,分别表示电梯数、最大载客量、总楼层数和选手总数。
  • 接下来 CC 行:每行三个整数 ti,si,eit_i, s_i, e_i,表示第 ii 个选手到达的时间、起始楼层和目标楼层。输入已按 tit_i 非递减顺序排列。

输出格式

  • 输出应包含 2C2C 行。每行三个整数 ni,ci,pin_i, c_i, p_i
    • nin_i:执行命令的电梯编号 (1niN1 \le n_i \le N)。
    • cic_i:命令类型(11 为接人,00 为放人)。
    • pip_i:选手的索引编号(1piC1 \le p_i \le C)。

约束条件:

  1. 任何时刻电梯内人数 P\le P
  2. 每个选手必须先被接走(c=1c=1)再被放下(c=0c=0)。
  3. 电梯按输出中该电梯对应的命令顺序执行。如果命令要求去接还没到达的选手,电梯会在该层等待。
  4. 电梯之间相互独立,不需要等待其他电梯完成命令。

好的,这是 Problem D: Elevators 的输入与输出数据样例及详细的逻辑解析。

这个样例非常重要,因为它展示了电梯是如何在不同时间点处理多名选手的。

1. 样例输入 (input_*.txt)

2 2 15 5
1 3 5
3 5 4
4 4 10
5 3 10
7 9 1

参数解读:

  • N=2N=2(2 部电梯), P=2P=2(载客量 2), K=15K=15(15 层楼), C=5C=5(5 名选手)。
  • 选手 11s1s 到达,335\to 5 层。
  • 选手 23s3s 到达,554\to 4 层。
  • 选手 34s4s 到达,4410\to 10 层。
  • 选手 45s5s 到达,3310\to 10 层。
  • 选手 57s7s 到达,991\to 1 层。

2. 样例输出 (output_*.txt)

1 1 1
1 1 2
1 0 2
1 0 1
1 1 3
2 1 4
1 0 3
2 0 4
1 1 5
1 0 5