A84814.午枫的字符串反转

普及+/提高

官方

通过率:0%

时间限制:2.00s

内存限制:512MB

题目描述

小午认为一个字符串中,如果只由 0011 组成,并且字符串中任意连续的 22 个字符都不相同的字符串是好字符串

现在小午有一个长度为 nn 且只由 0011 组成的字符串 ss 。他将依次对小枫进行 qq 次查询,每个查询有以下两种方式:

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

输入格式

第一行输入两个整数 n,qn,q (1n,q5×105)(1\leq n,q\leq 5\times10^5) ,分别表示字符串的长度以及询问次数。

第二行输入一个长度为 nn 的字符串 ss ,保证字符串中只包含 01 两种字符。

接下来 qq 行,每行输入一个查询,每个查询为以下两种形式之一:

1 L R2 L R ,其中 1LRn1\leq L \leq R \leq n ,保证至少存在一个类型 22 的查询。含义见题面所示。

输出格式

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

ii 行输出第 ii 个第 22 种类型查询的结果。

输入输出样例

  • 输入#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

    1 2
    1
    1 1 1
    2 1 1

    输出#2

    Yes

说明/提示

样例解释 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 的字符串也满足好字符串的条件。

首页