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 自动生成**