P17494 [ICPC 2026 Wuhan I] Sequence Operations

题目描述

给定一个长度为 $n$ 的非负整数序列 $a_1,a_2,\cdots,a_n$,以及两个长度为 $m$ 的序列 $c_1,c_2,\cdots,c_m$ 和 $x_1,x_2,\cdots,x_m$。保证 $x_i$ 均为正整数。 你需要从 $1$ 到 $m$ 依次顺序执行 $m$ 次操作。在第 $i$ 次操作中,你可以根据 $c_i$ 的值对当前的序列 $a$ 进行修改: - 若 $c_i=1$,那么你只能对所有的 $a_j$ 执行 $a_j\leftarrow\operatorname{mex}(a_j,x_i)$。 - 若 $c_i=2$,那么你只能对所有的 $a_j$ 执行 $a_j\leftarrow\gcd(a_j,x_i)$。 - 若 $c_i=0$,你可以自由选择执行上述两种操作中的任意一种。 在所有 $m$ 次操作执行完毕后,判断最后能不能让序列 $a$ 中的所有数都相等。 关于运算 $\operatorname{mex}$ 和 $\gcd$ 的额外说明如下: - 定义二元操作 $\operatorname{mex}(u,v)$ 表示不等于 $u$ 且不等于 $v$ 的最小非负整数。例如:$\operatorname{mex}(0,1)=2$,$\operatorname{mex}(2,2)=0$。 - 对于最大公约数 $\gcd$,特别定义 $\gcd(0,x)=x$。

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$($1 \le T \le 10^4$),表示测试数据组数。 对于每组测试数据: - 第一行包含两个整数 $n,m$($1 \le n,m \le 3\times10^5$),分别表示序列 $a$ 的长度和操作的次数。 - 第二行包含 $n$ 个非负整数 $a_1,a_2,\cdots,a_n$($0 \le a_j \le 10^9$),表示初始序列。 - 接下来 $m$ 行,第 $i$ 行包含两个整数 $c_i,x_i$($0 \le c_i \le 2$,$1 \le x_i \le 10^9$),表示第 $i$ 次操作的类型参数和数值参数。 保证所有测试数据中 $\sum n \le 3\times10^5$ 且 $\sum m \le 3\times10^5$。

输出格式

对于每组测试数据输出一行。如果在所有操作结束后能让所有数都相等,则输出 “Yes”;否则输出 “No”。

说明/提示

对于第一组数据:在第一次操作时,选择执行 $\gcd$ 操作,序列将变为 $[1,1,1,1,1,1,1,1]$。在后续的 $5$ 次操作中,你无论选择什么操作,序列元素始终会保持一致,因此输出 “Yes”。 对于第二组数据:唯一的一次操作是 $c_1=1$,$x_1=1$,你只能选择 $\operatorname{mex}$ 操作。 - $a_1\leftarrow\operatorname{mex}(0,1)=2$ - $a_2\leftarrow\operatorname{mex}(1,1)=0$ - $a_3\leftarrow\operatorname{mex}(2,1)=0$ 最终序列变为 $[2,0,0]$,无法让所有数字相等,输出 “No”。