AT_past202010_d 分身

题目描述

有 $N$ 个格子从左到右排成一列。我们将从左起第 $i$ 个格子称为格子 $i$。 有些格子上站着忍者,这种分布情况用字符串 $S$ 给出。当 $S$ 的第 $i$ 个字符为 `#` 时,格子 $i$ 上有忍者;为 `.` 时,格子 $i$ 上没有忍者。 现在你可以以任意顺序、任意次数进行两种操作,也可以一次都不进行。 - 类型 A:除了格子 $1$ 以外,当前所有有忍者的格子,各自会在左边相邻的格子生成一个分身。分身之后与本体无区别。 - 类型 B:除了格子 $N$ 以外,当前所有有忍者的格子,各自会在右边相邻的格子生成一个分身。分身之后与本体无区别。 设类型 A 操作的次数为 $x$,类型 B 操作的次数为 $y$。 请你求出所有操作结束后,每个格子上至少有一个忍者的方案中,使 $x+y$ 最小的一个方案,并输出对应的 $x, y$。

输入格式

输入从标准输入读入,格式如下: > $N$ $S$

输出格式

请输出使 $x+y$ 最小的一个方案对应的 $x, y$,用空格隔开。

说明/提示

### 注意 本题在 2020/11/8 18:00 JST 之前禁止讨论。如果有讨论,可能会被要求赔偿。考试结束后可以公开总分和认证等级,但请不要透露解题情况等信息。 ### 约束条件 - $1 \leq N \leq 50$ - $N$ 是整数 - $S$ 只包含 `.` 和 `#` - $S$ 至少包含一个 `#` ### 样例解释 1 例如,按类型 A、类型 B 的顺序操作,各格子的忍者分布会变为 `.#..#` → `##.##` → `#####`,最终每个格子都有忍者。类型 A 和类型 B 的总次数小于 $2$ 时无法达成目标,所以这是一个答案。例如 `2 0` 也是正确答案。 ### 样例解释 2 这是唯一的正确答案。 ### 样例解释 3 有时完全不需要分身操作。 由 ChatGPT 4.1 翻译