AT_abc380_c [ABC380C] Move Segment
题目描述
给定一个只包含 `0` 和 `1` 的长度为 $N$ 的字符串 $S$。
请输出将 $S$ 中从头开始第 $K$ 个 `1` 的连续块移动到第 $K-1$ 个 `1` 的连续块的后面所得的字符串。
保证 $S$ 中包含至少 $K$ 个 `1` 的连续块。
更为准确的说明如下:
- 用 $S_{l\ldots r}$ 表示 $S$ 的第 $l$ 个字符到第 $r$ 个字符组成的子串。
- $S_{l\ldots r}$ 是 `1` 的连续块,当且仅当满足以下所有条件:
- $S_l = S_{l+1} = \cdots = S_r = $ `1`
- $l=1$ 或 $S_{l-1} = $ `0`
- $r=N$ 或 $S_{r+1} = $ `0`
- 假设 $S$ 中所有的 `1` 的连续块为 $S_{l_1\ldots r_1}, \ldots, S_{l_m\ldots r_m}$,且 $l_1 < \cdots < l_m$。
这时,定义长度为 $N$ 的字符串 $T$ 为“将 $S$ 中从头开始第 $K$ 个 `1` 的连续块移动到第 $K-1$ 个 `1` 的连续块的后面所得的字符串”,具体如下:
- 当 $1 \leq i \leq r_{K-1}$ 时,$T_i = S_i$
- 当 $r_{K-1}+1 \leq i \leq r_{K-1}+(r_K-l_K)+1$ 时,$T_i = $ `1`
- 当 $r_{K-1}+(r_K-l_K)+2 \leq i \leq r_K$ 时,$T_i = $ `0`
- 当 $r_K+1 \leq i \leq N$ 时,$T_i = S_i$
输入格式
输入从标准输入中按以下格式给出。
> $N$ $K$ $S$
输出格式
请输出答案。
说明/提示
### 限制条件
- $1 \leq N \leq 5\times 10^5$
- $S$ 是只包含 `0` 和 `1` 的长度为 $N$ 的字符串
- $2 \leq K$
- $S$ 中包含至少 $K$ 个 `1` 的连续块
### 样例解释 1
$S$ 中有 $4$ 个 `1` 的连续块,分别为第 $2$ 个字符到第 $2$ 个字符、第 $5$ 个字符到第 $7$ 个字符、第 $11$ 个字符到第 $12$ 个字符、第 $15$ 个字符到第 $15$ 个字符。
由 ChatGPT 4.1 翻译