#aBC341E. [ABC341E] Alternating String

[ABC341E] Alternating String

AT_abc341_e [ABC341E] Alternating String

题目描述

我们称仅由 01 组成,且字符串中任意连续的 22 个字符都不相同的字符串为好字符串
给定一个长度为 NN 的仅由 01 组成的字符串 SS。有 QQ 个查询,请依次处理每个查询。
查询有以下两种类型:

  • 1 L R :将 SS 的第 LL 个字符到第 RR 个字符的 01 反转。即,对于满足 LiRL\leq i\leq R 的整数 ii,如果 SS 的第 ii 个字符为 0,则变为 1,如果为 1,则变为 0
  • 2 L R :取出 SS 的第 LL 个字符到第 RR 个字符(顺序不变)组成一个长度为 RL+1R-L+1 的字符串 SS'。如果 SS' 是好字符串,则输出 Yes,否则输出 No

输入格式

输入按以下格式从标准输入给出。

NN QQ
SS
query1query_1
query2query_2
\vdots
queryQquery_Q

每个查询 queryiquery_i (1iQ)(1\leq i\leq Q) 为以下两种形式之一:

11 LL RR

22 LL RR

输出格式

设第 22 种类型的查询有 KK 个,请输出 KK 行。
ii 行输出第 ii 个第 22 种类型查询的结果。

输入输出样例 #1

输入 #1

5 6
10100
2 1 3
2 1 5
1 1 4
2 1 5
1 3 3
2 2 4

输出 #1

Yes
No
Yes
No

输入输出样例 #2

输入 #2

1 2
1
1 1 1
2 1 1

输出 #2

Yes

说明/提示

限制条件

  • 1N,Q5×1051\leq N, Q\leq 5\times 10^5
  • SS 是长度为 NN 的仅由 01 组成的字符串
  • 对于两种类型的查询,1LRN1\leq L\leq R\leq N
  • 至少存在一个第 22 种类型的查询
  • NNQQLLRR 均为整数

样例解释 1

初始时,S=S=10100。依次处理每个查询如下:

  • 对于第 11 个查询,取出 SS 的第 11 到第 33 个字符,得到 S=S'=101。这是好字符串,输出 Yes
  • 对于第 22 个查询,取出 SS 的第 11 到第 55 个字符,得到 S=S'=10100。这不是好字符串,输出 No
  • 对于第 33 个查询,将 SS 的第 11 到第 44 个字符的 01 反转。此时 S=S=01010
  • 对于第 44 个查询,取出 SS 的第 11 到第 55 个字符,得到 S=S'=01010。这是好字符串,输出 Yes
  • 对于第 55 个查询,将 SS 的第 33 个字符的 01 反转。此时 S=S=01110
  • 对于第 66 个查询,取出 SS 的第 22 到第 44 个字符,得到 S=S'=111。这不是好字符串,输出 No

样例解释 2

注意,仅由 01 组成的长度为 11 的字符串也满足好字符串的条件。

由 ChatGPT 4.1 翻译