#ABC322F. 假期查询

假期查询

假期查询

题目描述

给定一个长度为 NN、由 0 和 1 组成的字符串 SS。设 SiS_i 表示 SS 的第 ii 个字符。

按顺序处理 QQ 个查询。每个查询由三个整数 (c,L,R)(c, L, R) 表示,其中 cc 表示查询类型。

  • 当 c=1c=1:对于满足 L≤i≤RL \le i \le R 的每个整数 ii,若 SiS_i 为 1 则改为 0,若为 0 则改为 1。
  • 当 c=2c=2:设 TT 为取出 SS 的第 LL 到第 RR 个字符得到的字符串,输出 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

输出格式

设 kk 为 c=2c=2 的查询个数。输出 kk 行。

第 ii 行输出第 ii 个 c=2c=2 查询的答案。

样例

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

查询按如下方式处理。

初始时,S=S= 1101110。

对于第一个查询,T=T= 1101110。TT 中最长的连续 1 是从第 4 个字符到第 6 个字符的 111,因此答案为 33。

对于第二个查询,T=T= 101。TT 中最长的连续 1 是第 1 个或第 3 个字符处的 1,因此答案为 11。

对于第三个查询,该操作将 SS 变为 1110000。

对于第四个查询,T=T= 00。TT 中不含 1,因此答案为 00。

对于第五个查询,该操作将 SS 变为 1111111。

对于第六个查询,T=T= 1111111。TT 中最长的连续 1 是从第 1 个字符到第 7 个字符的 1111111,因此答案为 77。

数据范围

  • 1≤N≤5×1051 \le N \le 5 \times 10^5
  • 1≤Q≤1051 \le Q \le 10^5
  • SS 是长度为 NN、由 0 和 1 组成的字符串。
  • c∈{1,2}c \in \lbrace 1, 2 \rbrace
  • 1≤L≤R≤N1 \le L \le R \le N
  • NN、QQ、cc、LL、RR 均为整数。
难度 提高+/省选
通过率 —
尝试 0
通过 0
ID
3079
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签