题目名称 2083. [SCOI2010]序列操作
输入输出 sequence.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2025-06-02加入
开放分组 全部用户
提交状态
分类标签
线段树
分享题解
通过:8, 提交:17, 通过率:47.06%
Gravatar李金泽 100 1.083 s 8.24 MiB C++
Gravatar李金泽 100 1.192 s 8.21 MiB C++
Gravatar淮淮清子 100 1.251 s 11.69 MiB C++
Gravatarsyzhaoss 100 1.369 s 10.55 MiB C++
Gravatar左清源 100 1.424 s 11.22 MiB C++
Gravatarwdsjl 100 1.474 s 19.51 MiB C++
GravatarLikableP 100 1.482 s 9.38 MiB C++
Gravatar秋_Water 100 2.175 s 10.90 MiB C++
Gravatar左清源 30 13.651 s 4.05 MiB C++
Gravatar二乾五 30 14.006 s 4.03 MiB C++
本题关联比赛
2025暑期集训第2场
关于 序列操作 的近10条评论(全部评论)

2083. [SCOI2010]序列操作

★★★   输入文件:sequence.in   输出文件:sequence.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

lxhgww 最近收到了一个 $01$ 序列,序列里面包含了 $n$ 个数,下标从 $0$ 开始。这些数要么是 $0$,要么是 $1$,现在对于这个序列有五种变换操作和询问操作:

0 l r把 $[l, r]$ 区间内的所有数全变成 $0$;

1 l r把 $[l, r]$ 区间内的所有数全变成 $1$;

2 l r把 $[l,r]$ 区间内的所有数全部取反,也就是说把所有的 $0$ 变成 $1$,把所有的 $1$ 变成 $0$;

3 l r询问 $[l, r]$ 区间内总共有多少个 $1$;

4 l r询问 $[l, r]$ 区间内最多有多少个连续的 $1$。

对于每一种询问操作,lxhgww 都需要给出回答,聪明的程序员们,你们能帮助他吗?

【输入格式】

第一行两个正整数 $n,m$,表示序列长度与操作个数。  

第二行包括 $n$ 个数,表示序列的初始状态。  

接下来 $m$ 行,每行三个整数,表示一次操作。

【输出格式】

对于每一个询问操作,输出一行一个数,表示其对应的答案。

【样例输入】

10 10
0 0 0 1 1 0 1 0 1 1
1 0 2
3 0 5
2 2 2
4 0 4
0 3 6
2 3 7
4 2 8
1 0 5
0 5 6
3 3 9

【样例输出】

5
2
6
5

【数据规模与约定】

对于 $30\%$ 的数据,$1\le n,m \le 1000$;

对于$100\%$ 的数据,$1\le n,m \le 10^5$。