CF1746F Kazaee

题目描述

给出一个长度为 $n$ 的数组 $a$ 和以下两种操作: - $1\ i\ x$:将 $a_i$ 修改为 $x$ ( $ 1 \le i \le n $ , $ 1 \le x \le 10^9 $ )。 - $2\ l\ r\ k$ ( $ 1 \le l \le r \le n $ , $ 1 \le k \le n $ ):询问在数组区间 $\left[l, r\right]$ 内是否每个出现过的正整数的出现次数都是 $k$ 的倍数。(建议参照样例理解)若是则输出 `YES`,若否则输出 `NO`。

输入格式

第一行两个整数 $n$、$q$( $ 1 \le n , q \le 3 \times 10^5 $ ),表示数组长度和操作数。 第二行 $n$ 个整数,为数组 $a$ 中的元素。(下标从 $1$ 开始) 之后 $q$ 行,每行一个询问。

输出格式

对于每个操作 $2$,给出相应答案(`YES` 或 `NO`)。

说明/提示

第一次询问中,查询的子数组为 $\left[1234,2,3,3,2,1\right]$,显然数字 $1$ 的出现次数不能被 $k=2$ 整除,因此答案为 `NO`。 第三次询问中,查询的子数组为 $\left[1,2,3,3,2,1\right]$,可以看到其中每个整数的出现次数都能被 $k=2$ 整除,因此答案为 `YES`。 第六次询问中,查询的子数组为 $\left[1,2,3,3,2,1,1,2,3\right]$,可以看到其中每个整数的出现次数都能被 $k=3$ 整除,因此答案为 `YES`。