#P15094. [UOI 2025 II Stage] Three Queries

    ID: 17010 远端评测题 4000ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2025分块UOI(乌克兰)

[UOI 2025 II Stage] Three Queries

题目描述

给定一个长度为 nn 的数组 aa 和 qq 个查询。我们还有一个无限长的二进制数组 ww,初始时所有 wi=1w_i = 1。

共有三种类型的查询:

  • 1 x1 \ x —— 切换 wxw_x 的值(从 11 变为 00,或从 00 变为 11)。
  • 2 l r2 \ l \ r —— 统计数组 aa 中,满足 wai=1w_{a_i} = 1 且 l≤i≤rl \le i \le r 的不同数字的数量。
  • 3 x t3 \ x \ t —— 将 axa_x 的值赋为 tt。

请对每个第二类查询给出答案。

输入格式

  • 第一行包含两个整数 nn 和 qq(1≤n,q≤3⋅1051 \le n, q \le 3\cdot10^5)——数组的长度和查询的数量。
  • 第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091 \le a_i \le 10^9)——数组元素的值。
  • 接下来的 qq 行,每行以一个整数 typetype(1≤type≤31 \le type \le 3)开头,表示查询的类型:
    • 如果 type=1type = 1,查询包含一个整数 xx(1≤x≤1091 \le x \le 10^9)——切换 wxw_x 的值。
    • 如果 type=2type = 2,查询包含两个整数 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n)——统计数组 aa 在区间 [l,r][l, r] 中,满足 wai=1w_{a_i} = 1 且 l≤i≤rl \le i \le r 的不同数字的数量。
    • 如果 type=3type = 3,查询包含两个整数 xx 和 tt(1≤x≤n,1≤t≤1091 \le x \le n, 1 \le t \le 10^9)——将 axa_x 的值替换为 tt。

输出格式

对于每个第二类查询,在单独一行输出区间内满足条件的不同数字的数量。

10 5
3 4 3 4 3 2 3 1 2 1
2 2 5
1 3
2 2 5
3 4 5
2 2 5
2
1
2

提示

在示例的第一个第二类查询中,区间为 [4,3,4,3][4, 3, 4, 3],其中包含数字 33 和 44,且 w3w_3、w4w_4 均为 11,因此答案为 22。执行下一个类型 11 的查询后,w3w_3 变为 00,因此对于下一个查询,答案为 11。执行下一个查询后,数组变为 [3,4,3,5,3,2,3,1,2,1][3, 4, 3, 5, 3, 2, 3, 1, 2, 1]。在最后一个查询中,区间为 [4,3,5,3][4, 3, 5, 3],包含数字 3,4,53, 4, 5,但 w3=0w_3 = 0,因此答案为 22。

评分细则

  • (88 分):n,q≤103n, q \le 10^3;
  • (66 分):仅包含类型 22 的查询;n=qn = q;li=1l_i = 1;ri=ir_i = i;
  • (1313 分):仅包含类型 22 的查询;
  • (1010 分):仅包含类型 11 和 22 的查询;所有 aia_i 互不相同;
  • (1414 分):仅包含类型 11 和 22 的查询;所有 waiw_{a_i} 只能改变一次;
  • (77 分):仅包含类型 11 和 22 的查询;
  • (1414 分):仅包含类型 22 和 33 的查询;
  • (88 分):任何时刻 ai≤100a_i \le 100;
  • (1010 分):n,q≤5⋅104n, q \le 5\cdot10^4;
  • (1010 分):无额外限制。

翻译由 DeepSeek V3 完成