AT_abc341_e [ABC341E] Alternating String

题目描述

我们称仅由 `0` 和 `1` 组成,且字符串中任意连续的 $2$ 个字符都不相同的字符串为**好字符串**。 给定一个长度为 $N$ 的仅由 `0` 和 `1` 组成的字符串 $S$。有 $Q$ 个查询,请依次处理每个查询。 查询有以下两种类型: - `1 L R` :将 $S$ 的第 $L$ 个字符到第 $R$ 个字符的 `0` 和 `1` 反转。即,对于满足 $L\leq i\leq R$ 的整数 $i$,如果 $S$ 的第 $i$ 个字符为 `0`,则变为 `1`,如果为 `1`,则变为 `0`。 - `2 L R` :取出 $S$ 的第 $L$ 个字符到第 $R$ 个字符(顺序不变)组成一个长度为 $R-L+1$ 的字符串 $S'$。如果 $S'$ 是好字符串,则输出 `Yes`,否则输出 `No`。

输入格式

输入按以下格式从标准输入给出。 > $N$ $Q$ > $S$ > $query_1$ > $query_2$ > $\vdots$ > $query_Q$ 每个查询 $query_i$ $(1\leq i\leq Q)$ 为以下两种形式之一: > $1$ $L$ $R$ 或 > $2$ $L$ $R$

输出格式

设第 $2$ 种类型的查询有 $K$ 个,请输出 $K$ 行。 第 $i$ 行输出第 $i$ 个第 $2$ 种类型查询的结果。

说明/提示

### 限制条件 - $1\leq N, Q\leq 5\times 10^5$ - $S$ 是长度为 $N$ 的仅由 `0` 和 `1` 组成的字符串 - 对于两种类型的查询,$1\leq L\leq R\leq N$ - 至少存在一个第 $2$ 种类型的查询 - $N$、$Q$、$L$、$R$ 均为整数 ### 样例解释 1 初始时,$S=$`10100`。依次处理每个查询如下: - 对于第 $1$ 个查询,取出 $S$ 的第 $1$ 到第 $3$ 个字符,得到 $S'=$`101`。这是好字符串,输出 `Yes`。 - 对于第 $2$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$`10100`。这不是好字符串,输出 `No`。 - 对于第 $3$ 个查询,将 $S$ 的第 $1$ 到第 $4$ 个字符的 `0` 和 `1` 反转。此时 $S=$`01010`。 - 对于第 $4$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$`01010`。这是好字符串,输出 `Yes`。 - 对于第 $5$ 个查询,将 $S$ 的第 $3$ 个字符的 `0` 和 `1` 反转。此时 $S=$`01110`。 - 对于第 $6$ 个查询,取出 $S$ 的第 $2$ 到第 $4$ 个字符,得到 $S'=$`111`。这不是好字符串,输出 `No`。 ### 样例解释 2 注意,仅由 `0` 或 `1` 组成的长度为 $1$ 的字符串也满足好字符串的条件。 由 ChatGPT 4.1 翻译