P15663 [ICPC 2025 Jakarta R] International Olympiad in ICPC
题目描述
你的大学正在举办一场名为 IOI 的竞赛。作为活动组织者,你想为其制作一条横幅。你准备的横幅可以表示为一个 $3 \times N$ 的网格,每个格子将被印成白色或黑色。由于印刷问题,有些格子不能印成黑色。
你从一条全白的横幅开始,并希望按如下方式在横幅上印出单词 $\texttt{IOI}$。
- 通过印出一个大小为 $3 \times p$($p \geq 1$)的**实心**黑色矩形来形成第一个字母 $\texttt{I}$。
- 通过印出一个大小为 $3 \times q$($q \geq 3$)的矩形**边框**(即只印边界)来形成字母 $\texttt{O}$。
- 通过印出一个大小为 $3 \times r$($r \geq 1$)的**实心**黑色矩形来形成第二个字母 $\texttt{I}$。
字母 $\texttt{O}$ 必须位于两个字母 $\texttt{I}$ 之间,并且字母之间**至少**要有一列间隔。同时要求字母 $\texttt{O}$ 的宽度**至少**等于两个字母 $\texttt{I}$ 的宽度之和,即 $q \geq p + r$。所有不属于单词 $\texttt{IOI}$ 的格子必须保持白色。
确定你可以印成黑色的格子的最大数量,或者判断无法印出单词 $\texttt{IOI}$。
输入格式
第一行包含一个整数 $N$($1 \le N \le 200\;000$),表示 $3 \times N$ 网格的大小。
接下来的三行,每行包含 $N$ 个字符,表示网格的格子。
这 $3N$ 个字符中的每一个对应一个格子,是 $\texttt{.}$ 或 $\texttt{\#}$,分别表示该格子可以或不可以印成黑色。
输出格式
输出一行,表示可以印成黑色的格子的最大数量。
如果无法印出单词 $\texttt{IOI}$,则输出 $-1$。
说明/提示
**样例 1 解释:** 你可以按以下方式印刷横幅。
```
I.OOO.I
I.O.O.I
I.OOO.I
```
**样例 3 解释:** 你可以按以下方式印刷横幅。
```
..I#OOOO#III
..I#O##O#III
..I#OOOO#III
```
**样例 4 解释:** 你可以按以下方式印刷横幅。
```
#III##OOOOOOOOOOO.II
#III##O##....#..O#II
#III##OOOOOOOOOOO.II
```
翻译由 DeepSeek V3.2 完成