CF940F Machine Learning

题目描述

你回到家,闻到一股难闻的气味。它来自哪里? 给定一个数组 $a$,你需要回答以下两种查询: 1. 给定两个整数 $l$ 和 $r$。令 $c_{i}$ 表示 $a_{l:r}$ 中 $i$ 出现的次数,其中 $a_{l:r}$ 表示从第 $l$ 个元素到第 $r$ 个元素(包含两端)的子数组。请你求出集合 $\{c_{0},c_{1},...,c_{10^{9}}\}$ 的 Mex。 2. 给定两个整数 $p$ 和 $x$。将 $a_{p}$ 改为 $x$。 一个多重集合的 Mex 是指不在该集合中的最小非负整数。 注意,本题中数组 $a$ 的所有元素都是正整数,这意味着 $c_{0}=0$,因此对于第一类查询,答案永远不会是 $0$。

输入格式

输入的第一行包含两个整数 $n$ 和 $q$($1 \leq n, q \leq 100000$),分别表示数组的长度和查询的数量。 第二行包含 $n$ 个整数,表示 $a_{1}, a_{2}, ..., a_{n}$($1 \leq a_{i} \leq 10^{9}$)。 接下来的 $q$ 行,每行描述一个查询。 第一类查询由三个整数 $t_{i}=1$,$l_{i}$,$r_{i}$ 描述,其中 $1 \leq l_{i} \leq r_{i} \leq n$,表示子数组的区间。 第二类查询由三个整数 $t_{i}=2$,$p_{i}$,$x_{i}$ 描述,其中 $1 \leq p_{i} \leq n$ 表示要修改的元素下标,$1 \leq x_{i} \leq 10^{9}$ 表示新的值。

输出格式

对于每个第一类查询,输出一个整数,表示集合 $\{c_{0},c_{1},...,c_{10^{9}}\}$ 的 Mex。

说明/提示

第一条查询的子数组只包含一个 $1$。 第二条查询的子数组包含四个 $2$,一个 $3$ 和两个 $1$。 第四条查询的子数组包含三个 $1$,三个 $2$ 和一个 $3$。 由 ChatGPT 4.1 翻译