AT_abc393_d [ABC393D] Swap to Gather
题目描述
[problemUrl]: https://atcoder.jp/contests/abc393/tasks/abc393_d
给定一个由 `0` 和 `1` 组成的长度为 $ N $ 的字符串 $ S $。保证 $ S $ 中至少包含一个 `1`。
你可以重复以下操作任意次数(包括零次):
- 选择一个满足 $ 1 \leq i \leq N-1 $ 的整数 $ i $,交换 $ S $ 的第 $ i $ 个字符和第 $ i+1 $ 个字符。
求使所有 `1` 聚集在一起所需的最小操作次数。
这里,所有 `1` 聚集在一起的定义是:存在整数 $ l, r \ (1 \leq l \leq r \leq N) $,使得对于 $ S $ 的第 $ i $ 个字符,当且仅当 $ l \leq i \leq r $ 时为 `1`,否则为 `0`。
输入格式
输入通过标准输入给出,格式如下:
> $ N $
> $ S $
输出格式
输出答案。
说明/提示
### 约束条件
- $ 2 \leq N \leq 5 \times 10^5 $
- $ N $ 为整数
- $ S $ 是由 `0` 和 `1` 组成的长度为 $ N $ 的字符串
- $ S $ 中至少包含一个 `1`
### 样例解释 1
例如,按以下步骤进行 $ 3 $ 次操作后,所有 `1` 将聚集在一起:
- 选择 $ i=2 $,交换 $ S $ 的第 $ 2 $ 和第 $ 3 $ 个字符,此时 $ S= $ `0011001`;
- 选择 $ i=6 $,交换 $ S $ 的第 $ 6 $ 和第 $ 7 $ 个字符,此时 $ S= $ `0011010`;
- 选择 $ i=5 $,交换 $ S $ 的第 $ 5 $ 和第 $ 6 $ 个字符,此时 $ S= $ `0011100`。
由于无法在 $ 2 $ 次或更少操作内完成,因此答案为 $ 3 $。
### 样例解释 2
所有 `1` 已经聚集在一起,因此无需任何操作。
翻译由 DeepSeek R1 完成