#aBC322F. [ABC322F] Vacation Query

[ABC322F] Vacation Query

AT_abc322_f [ABC322F] Vacation Query

题目描述

给定一个由 01 组成、长度为 NN 的字符串 SS。记 SS 的第 ii 个字符为 SiS_i

请依次处理 QQ 个查询。
每个查询由三个整数 (c,L,R)(c, L, R) 组成,cc 的取值决定了查询的类型。

  • c=1c=1 时:对于所有满足 LiRL \leq i \leq R 的整数 ii,如果 SiS_i1,则将其变为 0;如果 SiS_i0,则将其变为 1
  • c=2c=2 时:取出 SS 的第 LL 个字符到第 RR 个字符组成的字符串 TT。请输出 TT 中连续的 1 的最大长度。

输入格式

输入按以下格式从标准输入读入。这里 queryi\mathrm{query}_i 表示第 ii 个查询。

NN QQ
SS
query1\mathrm{query}_1
query2\mathrm{query}_2
\vdots
queryQ\mathrm{query}_Q

每个查询的格式如下:

cc LL RR

输出格式

c=2c=2 的查询有 kk 个,请输出 kk 行。
ii 行输出第 iic=2c=2 查询的答案。

输入输出样例 #1

输入 #1

7 6
1101110
2 1 7
2 2 4
1 3 6
2 5 6
1 4 7
2 1 7

输出 #1

3
1
0
7

说明/提示

数据范围

  • 1N5×1051 \leq N \leq 5 \times 10^5
  • 1Q1051 \leq Q \leq 10^5
  • SS 是长度为 NN 的仅包含 01 的字符串
  • c{1,2}c \in \lbrace 1, 2 \rbrace
  • 1LRN1 \leq L \leq R \leq N
  • N,Q,c,L,RN, Q, c, L, R 均为整数

样例解释 1

依次处理查询如下:

  • 初始时,S=S= 1101110
  • 第 1 个查询,T=T= 1101110TT 中连续的 1 最长为第 4 到第 6 个字符的 111,答案为 33
  • 第 2 个查询,T=T= 101TT 中连续的 1 最长为第 1 或第 3 个字符的 1,答案为 11
  • 第 3 个查询,操作后 SS 变为 1110000
  • 第 4 个查询,T=T= 00TT 中没有 1,答案为 00
  • 第 5 个查询,操作后 SS 变为 1111111
  • 第 6 个查询,T=T= 1111111TT 中连续的 1 最长为第 1 到第 7 个字符的 1111111,答案为 77

由 ChatGPT 4.1 翻译