CF1775B Gardener and the Array
题目描述
园丁 Kazimir Kazimirovich 有一个包含 $n$ 个整数 $c_1, c_2, \dots, c_n$ 的数组。
他想要检查是否存在两个不同的原数组的子序列 $a$ 和 $b$,使得 $f(a) = f(b)$,其中 $f(x)$ 表示序列 $x$ 中所有数字的按位或(bitwise OR)。
如果序列 $q$ 可以通过从序列 $p$ 中删除若干(可以为零或全部)元素得到,则称 $q$ 是 $p$ 的一个子序列。
如果两个子序列在原数组中的元素下标集合不同,则认为这两个子序列是不同的,也就是说,比较子序列时不考虑元素的值,只考虑它们在原数组中的下标集合。
输入格式
每组输入包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^5$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示数组 $c$ 的大小。
本题中,数组 $c$ 的描述采用隐式方式以加快输入速度。
接下来 $n$ 行的第 $(i+1)$ 行以一个整数 $k_i$($1 \le k_i \le 10^5$)开头,表示 $c_i$ 中被置为 $1$ 的比特位数量。接下来是 $k_i$ 个互不相同的整数 $p_{i,1}, p_{i,2}, \dots, p_{i,k_i}$($1 \le p_{i,j} \le 2 \cdot 10^5$),表示 $c_i$ 中被置为 $1$ 的比特位编号。换句话说,$c_i = 2^{p_{i,1}} + 2^{p_{i,2}} + \ldots + 2^{p_{i,k_i}}$。
保证所有测试用例中 $\sum k_i \le 10^5$。
输出格式
对于每组输入,如果存在两个不同的子序列使得 $f(a) = f(b)$,输出 "Yes";否则输出 "No"。
你可以以任意大小写输出答案(如 "yEs"、"yes"、"Yes"、"YES" 都会被判为正确)。
说明/提示
可以证明,在第一个测试用例中不存在两个不同的子序列 $a$ 和 $b$ 满足 $f(a) = f(b)$。
在第二个测试用例中,存在一种可能的答案:子序列 $a$ 由第 $1$ 个元素组成,子序列 $b$ 由第 $1$ 个和第 $2$ 个元素组成。
在第三个测试用例中,存在一种可能的答案:子序列 $a$ 由第 $1$、$2$、$3$、$4$ 个元素组成,子序列 $b$ 由第 $2$、$3$、$4$ 个元素组成。
由 ChatGPT 4.1 翻译