CF1949G.Scooter
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
捷克技术大学的校园内有 n 栋建筑,编号从 1 到 n。每栋建筑可能安排一堂数学课或一堂计算机课,或者没有安排任何课程(不能同时安排两门课)。此外,每栋建筑最多有一位教授,这位教授要么擅长数学,要么擅长计算机科学。
作为 University Express Inc. 的实习生,你的任务是快速将教授送到他们的课堂。公司为你提供了一辆全新的双人滑板车,能载你和最多一位乘客。
开始时,滑板车上只有你。当你到达某栋建筑时,可以接上或送下教授。为了提高效率,你可以选择任意顺序访问这 n 栋建筑中的每一栋建筑,但每栋建筑只能访问一次(你可以选择从哪栋建筑开始)。
在行程结束后,每栋安排了数学课的建筑必须有一位数学教授,每栋安排了计算机课的建筑必须有一位计算机教授。
请设计一条路线,使所有课程得以进行。
输入格式
第一行输入一个整数 n (1≤n≤2000),表示建筑的数量。
第二行输入一个长度为 n 的字符串 c,由字符 -、C 和 M 组成。第 i 个字符表示第 i 栋建筑安排的课程类型,其中 C 表示计算机科学课,M 表示数学课,- 表示没有安排课程。
第三行输入一个长度为 n 的字符串 p,由字符 -、C 和 M 组成。第 i 个字符表示第 i 栋建筑内教授的专业,其中 C 表示计算机科学专家,M 表示数学专家,- 表示没有教授。
保证对于输入的所有测试数据,至少有一种有效的行程。
输出格式
第一行输出一个整数 l,表示你设计的行程方案包含的操作数量。
接下来的 l 行中,每行描述一个操作,可以是以下三种指令之一:
- DRIVE x —— 驶向编号为 x 的建筑(1≤x≤n);
- PICKUP —— 在当前建筑接上教授;
- DROPOFF —— 在当前建筑放下教授。
要确保行程方案有效,必须满足以下条件:
- 每个 DRIVE 指令只能驶往不同的建筑;
- 在每栋建筑上,最多只能执行一条 PICKUP 和一条 DROPOFF 指令,且顺序为先接后送;
- 执行 PICKUP 指令时,当前建筑必须有一位教授,且滑板车上必须为空;
- 执行 DROPOFF 指令时,滑板车上必须已经有一位教授;
- 行程结束时,所有安排了课程的建筑都必须有适合的专业教授驻扎(无论是原本就在那里的,还是由你接送过去的)。
特别注意,不能在刚送下教授后,又立即将相同的教授接上。
提示
在第一个样例中,你首先驾驶滑板车去第 3 号建筑,接上数学教授,然后送到第 2 号建筑,因为那里有一节数学课。接着,你在第 2 号建筑接上计算机科学教授,并将她送到第 1 号建筑,完成整个行程。
本翻译由 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测评打分。不知道怎么写?