QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 2048 MB Total points: 100

#10342. Scooter

Statistics

捷克技术大学校园由 $n$ 栋建筑组成,编号从 1 到 $n$。每栋建筑内可能安排了一门数学课、一门计算机科学课,或者什么课都没有(但不能同时有两门课)。此外,每栋建筑内最多有一位教授,且每位教授要么是数学专家,要么是计算机科学专家。

作为 University Express Inc. 的实习生,你的工作是快速将教授运送到他们的课堂。为此,你获得了一辆全新的双人滑板车,除了你自己外,最多只能搭载一名乘客。

最初,滑板车上只有你一个人。当你到达一栋建筑时,你可以从该建筑接走或放下教授。为了提高任务效率,你被允许按照你选择的顺序,最多访问每栋建筑一次(你也可以决定从哪里开始行程)。

行程结束后,在每一栋安排了数学课的建筑中,必须有一位数学专家教授;在每一栋安排了计算机科学课的建筑中,必须有一位计算机科学专家教授。

请设计一个行程,使得所有课程都能顺利开课。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 2000$),表示校园内建筑的数量。

第二行包含一个长度为 $n$ 的字符串 $c$,由字符 -、C、M 组成。第 $i$ 个字符表示第 $i$ 栋建筑中安排的课程科目。C 代表计算机科学,M 代表数学,- 代表第 $i$ 栋建筑没有安排课程。

第三行包含一个长度为 $n$ 的字符串 $p$,由字符 -、C、M 组成。第 $i$ 个字符表示第 $i$ 栋建筑中教授的专业(如果该建筑内有教授)。C 代表计算机科学,M 代表数学,- 代表第 $i$ 栋建筑没有教授。

保证对于所有给定的测试用例,都存在一个合法的行程。

输出格式

第一行输出一个整数 $l$,表示你所选行程中的操作次数。

接下来的 $l$ 行中,第 $i$ 行 ($1 \le i \le l$) 必须包含以下三条指令之一:

  1. DRIVE $x$ — 前往编号为 $x$ 的建筑 ($1 \le x \le n$);
  2. PICKUP — 接走最初位于当前建筑的教授;
  3. DROPOFF — 在当前建筑放下随行的教授。

为了使行程合法,必须满足以下条件:

  1. 不得有两条 DRIVE 指令前往同一栋建筑;
  2. 在每栋特定建筑中,最多只能执行一次 DROPOFF 和一次 PICKUP 指令(且顺序必须是先 DROPOFF 后 PICKUP,如果两者都有);
  3. 对于所有 PICKUP 指令,该建筑最初必须有教授,且滑板车上当前没有乘客;
  4. 对于所有 DROPOFF 指令,执行指令时滑板车上必须载有一名教授;
  5. 行程结束后,对于每一栋有课的建筑,必须有一位对应科目的专家教授(无论是最初就在该建筑,还是通过 DROPOFF 送达)。

注意,特别地,你不能接走你刚刚放下的一位教授,否则行程无效。

样例

输入 1

3
CM-
-CM

输出 1

7
DRIVE 3
PICKUP
DRIVE 2
DROPOFF
PICKUP
DRIVE 1
DROPOFF

说明 1

你首先开车前往 3 号建筑。然后接走数学教授。在将他送到 2 号建筑(那里有数学课)后,你从那里接走计算机科学教授,并将她送到 1 号建筑,完成你的行程。

输入 2

1
C
C

输出 2

0

输入 3

2
-M
MC

输出 3

4
DRIVE 1
PICKUP
DRIVE 2
DROPOFF

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.