P13852 [CERC 2023] Human Resources [Can't Judge Yet]

题目描述

你在 ECorp 工作,你们的人力资源部门正在将员工数据从 Hooli 提供的本地系统迁移到由一家新创公司 Pied Piper 提供的云原生解决方案。不幸的是,新系统尚未具备与旧系统相同的功能,他们需要你的帮助来存储和展示整个管理结构。由于新系统非常精简并注重资源使用,因此他们只能将存储空间增加两千比特。

输入格式

输入的第一行是要执行的命令:`ENCODE` 或 `DECODE`。 ### Encode 你将会收到若干行,描述经理及其直接下属。每一行都以经理的名字开始,后面跟一个冒号,再后面是一个用空格分隔的直接下属名单,按从最喜欢到最不喜欢的顺序排列。冒号后会紧跟一个空格。如果某人有上级经理,那么在输入中不会在上级经理之前列出他。 ### Decode 在解码的情况下,你将会得到程序在编码阶段的输出:即所有员工名字的列表(顺序任意,每行一个名字),然后是一行二进制字符串 $B$。

输出格式

### Encode 程序必须首先输出所有员工的名字,每行一个,顺序任意(这是高层管理的要求)。然后额外输出一行编码字符串 $B$,该字符串只能由 `0` 和 `1` 组成,长度不得超过 2048 个字符。 ### Decode 程序必须输出原始的管理结构,格式与输入时相同。经理的定义顺序不必与原始输入完全一致,但如果某人有上级经理,则必须在上级经理之后出现。然而,对于任意一个经理,其下属的顺序必须保持不变(从最喜欢到最不喜欢)。

说明/提示

### 注释 在上面的例子中,编码使用了连续两个字符来表示名单中的每个人。 `11` 表示 CEO(Janez)。 `00` 表示层级为第二层的员工。在 CEO 的直接下属列表中,他们的顺序与编码时的名字列表顺序一致(Josip 和 Zofia),此处刚好有两人。 `10` 表示 Zofia 的下属,而 `01` 则表示 Josip 的下属,但 Josip 实际上没有下属。 ### 输入限制 - $2 \leq \text{ECorp 的员工总数} \leq 600$ - $|B| \leq 2048$ - 员工名字最长 10 个字符,仅由英文字母的大小写组成。 - 恰好有一名没有经理的员工(公司 CEO),且任何员工都不会有超过一名经理。 --- 翻译由 ChatGPT-5 完成