CF1949G.Scooter

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

捷克技术大学的校园内有 nn 栋建筑,编号从 11 到 nn。每栋建筑可能安排一堂数学课或一堂计算机课,或者没有安排任何课程(不能同时安排两门课)。此外,每栋建筑最多有一位教授,这位教授要么擅长数学,要么擅长计算机科学。

作为 University Express Inc. 的实习生,你的任务是快速将教授送到他们的课堂。公司为你提供了一辆全新的双人滑板车,能载你和最多一位乘客。

开始时,滑板车上只有你。当你到达某栋建筑时,可以接上或送下教授。为了提高效率,你可以选择任意顺序访问这 nn 栋建筑中的每一栋建筑,但每栋建筑只能访问一次(你可以选择从哪栋建筑开始)。

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

请设计一条路线,使所有课程得以进行。

输入格式

第一行输入一个整数 nn (1≤n≤20001 \le n \le 2000),表示建筑的数量。

第二行输入一个长度为 nn 的字符串 cc,由字符 -\texttt{-}、C\texttt{C} 和 M\texttt{M} 组成。第 ii 个字符表示第 ii 栋建筑安排的课程类型,其中 C\texttt{C} 表示计算机科学课,M\texttt{M} 表示数学课,-\texttt{-} 表示没有安排课程。

第三行输入一个长度为 nn 的字符串 pp,由字符 -\texttt{-}、C\texttt{C} 和 M\texttt{M} 组成。第 ii 个字符表示第 ii 栋建筑内教授的专业,其中 C\texttt{C} 表示计算机科学专家,M\texttt{M} 表示数学专家,-\texttt{-} 表示没有教授。

保证对于输入的所有测试数据,至少有一种有效的行程。

输出格式

第一行输出一个整数 ll,表示你设计的行程方案包含的操作数量。

接下来的 ll 行中,每行描述一个操作,可以是以下三种指令之一:

  1. DRIVE x\texttt{DRIVE } x —— 驶向编号为 xx 的建筑(1≤x≤n1 \leq x \leq n);
  2. PICKUP\texttt{PICKUP} —— 在当前建筑接上教授;
  3. DROPOFF\texttt{DROPOFF} —— 在当前建筑放下教授。

要确保行程方案有效,必须满足以下条件:

  1. 每个 DRIVE\texttt{DRIVE} 指令只能驶往不同的建筑;
  2. 在每栋建筑上,最多只能执行一条 PICKUP\texttt{PICKUP} 和一条 DROPOFF\texttt{DROPOFF} 指令,且顺序为先接后送;
  3. 执行 PICKUP\texttt{PICKUP} 指令时,当前建筑必须有一位教授,且滑板车上必须为空;
  4. 执行 DROPOFF\texttt{DROPOFF} 指令时,滑板车上必须已经有一位教授;
  5. 行程结束时,所有安排了课程的建筑都必须有适合的专业教授驻扎(无论是原本就在那里的,还是由你接送过去的)。

特别注意,不能在刚送下教授后,又立即将相同的教授接上。

提示

在第一个样例中,你首先驾驶滑板车去第 33 号建筑,接上数学教授,然后送到第 22 号建筑,因为那里有一节数学课。接着,你在第 22 号建筑接上计算机科学教授,并将她送到第 11 号建筑,完成整个行程。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    3
    CM-
    -CM

    输出#1

    7
    DRIVE 3
    PICKUP
    DRIVE 2
    DROPOFF
    PICKUP
    DRIVE 1
    DROPOFF
  • 输入#2

    1
    C
    C

    输出#2

    0
  • 输入#3

    2
    -M
    MC

    输出#3

    4
    DRIVE 1
    PICKUP
    DRIVE 2
    DROPOFF

输入解题思路,AI测评打分。不知道怎么写?

首页