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 翻译