QOJ.ac

QOJ

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

#23829. 乘坐 IOI 列车 (Take the ‘IOI’ train)

Statistics

题目描述

IOI 王国最近新铺设了一条铁路。在 IOI 王国的铁路上行驶的列车由若干节车厢连接而成,车厢有 I 和 O 共 $2$ 种类型。每节车厢只能与不同种类的车厢连接。此外,由于需要在列车两端设置驾驶室,列车两端的车厢必须是类型 I。一列列车用将其各节车厢类型对应的字符按顺序拼接而成的字符串表示,列车的长度定义为该字符串的长度。例如,按 IOIOI 的顺序连接车厢可以编成长度为 $5$ 的列车,而单独一节车厢 I 本身也是长度为 $1$ 的列车。但若按 OIOI 或 IOOI 这样的顺序排列车厢,则无法编成列车。

若干节车厢存放在 $2$ 个车库中。每个车库中的车厢都排成一列。编组列车时,将车厢从车库中驶出并在车库前依次连接。每次只能从车库中驶出最靠近该车库入口的车厢,但从哪个车库驶出车厢的顺序可以自由决定。

在开始编组列车之前,可以从车库中驶出任意多节车厢并移至另一条待机轨道上。移至待机轨道上的车厢此后不能再用于编组列车。此外,一旦开始编组列车,在编组结束之前不能再将车厢从车库移至待机轨道。

编组列车时,不必用尽车库中的所有车厢。也就是说,完成列车编组后,车库内可以留有未使用的车厢。

由于预计在 IOI 王国乘坐铁路的人会非常多,我们希望编成尽可能长的列车。

图:正在编组列车的中途(上方:待机轨道;左下方:编组中的列车;右侧:车库 S 与车库 T),此时不能再将车库中的车厢移至待机轨道。该图对应样例 1。

任务

给定存放在车库中的车厢信息,请编写程序求出可编成的列车长度的最大值。存放在各个车库中的车厢序列用仅由 I 和 O 这 $2$ 种字符组成的字符串表示,$2$ 个车库的信息分别作为长度为 $M$ 的字符串 $S$ 和长度为 $N$ 的字符串 $T$ 给出。每个字符表示 $1$ 节车厢,该字符与车厢的种类相同。字符串的第 $1$ 个字符表示最靠近车库入口的车厢,末尾字符表示车库最深处的车厢。

数据范围

  • $1 \le M \le 2\,000$:字符串 $S$ 的长度。
  • $1 \le N \le 2\,000$:字符串 $T$ 的长度。

输入格式

从标准输入读取以下数据。

  • 第 $1$ 行写有以空格分隔的 $M, N$。
  • 第 $2$ 行写有字符串 $S$。
  • 第 $3$ 行写有字符串 $T$。

输出格式

向标准输出以 $1$ 行打印一个整数,表示可编成的列车长度的最大值。如果连 $1$ 列列车都无法编成,则输出 0。

评分标准

  • 在占总分 $20\%$ 的测试数据中,满足 $M \le 10$,$N \le 10$。
  • 在占总分 $50\%$ 的测试数据中,满足 $M \le 50$,$N \le 50$。

样例 1

5 5
OIOOI
OOIOI
7

记由 $S$ 表示的车库为车库 S,由 $T$ 表示的车库为车库 T。此时,例如先将车库 S 的最前 $1$ 节车厢、车库 T 的最前 $2$ 节车厢驶出并待机后,如果按照 车库 S、车库 S、车库 T、车库 S、车库 S、车库 T、车库 T 的顺序驶出车厢,即可编成长度为 $7$ 的列车 IOIOIOI。

除此之外,先将车库 S 的最前 $1$ 节车厢、车库 T 的最前 $2$ 节车厢驶出并待机后,按照 车库 T、车库 T、车库 S、车库 S、车库 T、车库 S、车库 S 的顺序驶出车厢,也可以编成长度为 $7$ 的列车。由于无法编成比这更长的列车,因此输出 $7$。

样例 2

5 9
IIIII
IIIIIIIII
1

请注意,仅由 $1$ 节车厢构成的列车 I 也满足作为列车的条件。

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.