#P12846. [蓝桥杯 2025 国 A] 翻转硬币

    ID: 12622 Type: RemoteJudge 2000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>线段树2025蓝桥杯国赛

[蓝桥杯 2025 国 A] 翻转硬币

题目描述

给定 nn 个硬币的初始状态,以及 mm 次如下类型的操作:

  1. 1 x y1 \ x \ y: 将 [x,y][x, y] 之间的硬币每隔一个翻转一个,即翻转 x,x+2,x+4,,x+2t (x+2ty)x, x+2, x+4, \cdots, x+2t \ (x+2t \leq y)
  2. 2 x y2 \ x \ y: 将 [x,y][x, y] 之间的硬币每隔两个翻转一个,即翻转 x,x+3,x+6,,x+3t (x+3ty)x, x+3, x+6, \cdots, x+3t \ (x+3t \leq y)
  3. 3 x y3 \ x \ y: 将 [x,y][x, y] 之间的硬币全部翻转;
  4. 4 x y4 \ x \ y: 查询 [x,y][x, y] 之间正面朝上的硬币个数。

输入格式

输入的第一行包含两个正整数 n,mn, m,用一个空格分隔,分别表示硬币数和操作数。

第二行包含 nn 个整数 f1,f2,,fnf_1, f_2, \cdots, f_n,相邻整数之间使用一个空格分隔,表示每个硬币的初始状态,其中 fi=0f_i = 0 表示第 ii 个硬币为反面朝上,fi=1f_i = 1 表示第 ii 个硬币为正面朝上。

接下来 mm 行,每行包含三个正整数 ai,xi,yia_i, x_i, y_i,相邻整数之间使用一个空格分隔,表示一次操作。

输出格式

输出若干行。对于每次查询操作(4 x y4 \ x \ y),输出一行包含一个整数表示该查询的答案。

5 8
1 0 0 1 0
1 2 3
4 1 5
2 3 5
4 2 5
3 1 5
4 2 3
3 1 4
4 1 5
3
3
0
5

提示

【评测用例规模与约定】

对于 20% 的评测用例,1n,m50001 \leq n, m \leq 5000

对于另外 20% 的评测用例,1n,m1051 \leq n, m \leq 10^5,且没有 1 x y1 \ x \ y 类型的操作;

对于另外 20% 的评测用例,1n,m1051 \leq n, m \leq 10^5,且没有 2 x y2 \ x \ y 类型的操作;

对于所有评测用例,1n5×1051 \leq n \leq 5 \times 10^51m1051 \leq m \leq 10^5fi{0,1}f_i \in \{0, 1\}ai{1,2,3,4}a_i \in \{1, 2, 3, 4\}1xiyin1 \leq x_i \leq y_i \leq n