AT_joi2013ho2 IOI 列車で行こう (Take the 'IOI' train)

题目描述

在 IOI 国,最近新建了一条铁路。运行在 IOI 国铁路上的列车由若干节车厢连接而成,车厢有两种类型,分别用 `I` 和 `O` 表示。每节车厢只能与不同类型的车厢相连。此外,由于需要设置驾驶室,列车两端的车厢必须是 `I` 类型。列车可以用表示车厢类型的字符串依次连接而成,列车的长度即为该字符串的长度。例如,依次连接 `IOIOI` 可以组成一列长度为 $5$ 的列车,单独的 `I` 车厢也可以视为长度为 $1$ 的列车。像 `OIOI` 或 `IOOI` 这样的顺序无法组成有效的列车。 有若干车厢分别存放在两个车库中。每个车库中的车厢按一列顺序排列。组装列车时,可以从车库中取出车厢,在车库前依次连接。每次只能从每个车库最靠近入口的那节车厢取出,但可以自由选择从哪个车库取车厢的顺序。 在组装列车之前,可以任意多地将车厢从车库取出,放到备用轨道上。被移到备用轨道上的车厢之后不能再用于组装列车。此外,一旦开始组装列车,在组装完成之前,不能再将车厢从车库移到备用轨道。 组装列车时,不需要用完所有车库中的车厢。也就是说,组装完成后,车库中可以剩下未使用的车厢。 由于 IOI 国乘坐铁路的人非常多,因此希望组装出尽可能长的列车。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_joi2013ho2/e7f0a1c5c92198e9f99bd34c7f7c4549df9732c2.png) 图为正在组装列车的过程,此时不能再将车厢移到备用轨道。该图对应输入输出样例 $1$。

输入格式

从标准输入读取以下数据: - 第 $1$ 行包含两个用空格分隔的整数 $M,\ N$。 - 第 $2$ 行包含字符串 $S$。 - 第 $3$ 行包含字符串 $T$。

输出格式

输出一个整数,表示能够组装出的列车的最大长度。如果无法组装出任何列车,则输出 $0$。

说明/提示

## 任务 给定存放在车库中的车厢信息,编写程序求出能够组装出的列车的最大长度。每个车库中的车厢序列由仅包含两种字符 `I` 和 `O` 的字符串表示,两个车库的信息分别为长度为 $M$ 的字符串 $S$ 和长度为 $N$ 的字符串 $T$。每个字符表示一节车厢,字符类型与车厢类型相同。字符串的第 $1$ 个字符表示最靠近车库入口的车厢,末尾字符表示最靠近车库深处的车厢。 ## 限制 $1 \leq M \leq 2000$,字符串 $S$ 的长度。 $1 \leq N \leq 2000$,字符串 $T$ 的长度。 ## 评分标准 在评分数据中,$20\%$ 的数据满足 $M \leq 10$,$N \leq 10$。 在评分数据中,$50\%$ 的数据满足 $M \leq 50$,$N \leq 50$。 ## 样例解释 1 将由 $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 需要注意,单节车厢 `I` 也满足列车的条件。 由 ChatGPT 4.1 翻译