AT_s8pc_2_h Counting 1's
题目描述
给定一个长度为 $n$ 的数列。
我们会给出 $Q$ 个查询,每个查询包含一个参数 $q_i$。
- 如果 $q_i$ 为 $1$,则反转区间 $l_i \le i < r_i$ 内的所有位。
- 如果 $q_i$ 为 $2$,则计算并输出区间 $l_i \le i < r_i$ 内的 $1$ 的个数。
请编写一个程序来处理这些查询。最初,该数列中的所有位都初始化为 $0$,并且位置从 $0$ 开始编号。
例如,当 $n=7$,并且查询 $q_i, l_i, r_i$ 如下表所示时,数列状态将会按照下述方式变化:
| 查询 $\{q_i, l_i, r_i\}$ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 输出 |
|-----------------|---|---|---|---|---|---|---|--------|
| $\{1, 2, 5\}$ | 0 | 0 | 1 | 1 | 1 | 0 | 0 | - |
| $\{1, 4, 7\}$ | 0 | 0 | 1 | 1 | 0 | 1 | 1 | - |
| $\{2, 1, 6\}$ | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 3 |
| $\{1, 0, 4\}$ | 1 | 1 | 0 | 0 | 0 | 1 | 1 | - |
| $\{2, 3, 7\}$ | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 2 |
| $\{1, 2, 6\}$ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | - |
| $\{2, 0, 7\}$ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 6 |
因此,输出结果为:
```
3
2
6
```
输入格式
输入通过标准输入提供,格式如下:
> $n$ $Q$
> $q_1$ $l_1$ $r_1$
> :
> :
> $q_Q$ $l_Q$ $r_Q$
- 第一行包含两个整数,数列长度 $n$ 和查询数量 $Q$,中间以空格分隔。
- 接下来的 $Q$ 行中,每行提供三个整数 $q_i, l_i, r_i$,以空格分隔。
- $q_i$ 表示查询的类型,$l_i, r_i$ 分别表示该查询涉及的区间的左端和右端。
- 请注意,查询范围包括左端点 $l_i$,但不包括右端点 $r_i$。
输出格式
对于每个查询 $q_i = 2$,输出区间 $l_i \le i < r_i$ 内的 $1$ 的个数,每个结果占一行。
说明/提示
- $1 \le n, Q \le 100,000$
- $0 \le l_i < r_i \le n$
- $1 \le q_i \le 2$
### 子任务
子任务 1 [4 分]
- 满足 $1 \le n, Q \le 1,000$。
子任务 2 [12 分]
- 输出查询的总数量不超过 $1,000$ 个。
子任务 3 [36 分]
- 所有输出查询都要求 $l_i, r_i$ 为 $0, n$ 组合。
子任务 4 [48 分]
- 没有附加限制。
**本翻译由 AI 自动生成**