CF1980C Sofia and the Lost Operations
题目描述
Sofia 有一个包含 $n$ 个整数的数组 $a_1, a_2, \ldots, a_n$。有一天她觉得这个数组很无聊,于是决定对它依次进行 $m$ 次修改操作。
每次修改操作由一对数字 $\langle c_j, d_j \rangle$ 描述,表示将数组下标为 $c_j$ 的元素赋值为 $d_j$,即执行 $a_{c_j} = d_j$。在依次完成所有修改操作后,Sofia 丢弃了最终得到的数组。
最近,你发现了一个包含 $n$ 个整数的数组 $b_1, b_2, \ldots, b_n$。你想知道这个数组是否可能是 Sofia 修改后的数组。你知道原始数组的值,以及所有 $d_1, d_2, \ldots, d_m$ 的值,但 $c_1, c_2, \ldots, c_m$ 的值已经丢失。
是否存在一个序列 $c_1, c_2, \ldots, c_m$,使得依次对数组 $a_1, a_2, \ldots, a_n$ 执行修改操作 $\langle c_1, d_1 \rangle, \langle c_2, d_2 \rangle, \ldots, \langle c_m, d_m \rangle$ 后,能够得到数组 $b_1, b_2, \ldots, b_n$?
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \times 10^5$),表示数组的大小。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$),表示原始数组的元素。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \le b_i \le 10^9$),表示你发现的数组的元素。
第四行包含一个整数 $m$($1 \le m \le 2 \times 10^5$),表示修改操作的次数。
第五行包含 $m$ 个整数 $d_1, d_2, \ldots, d_m$($1 \le d_j \le 10^9$),表示每次修改操作中被保留的值。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$,所有测试用例中 $m$ 的总和也不超过 $2 \times 10^5$。
输出格式
输出 $t$ 行,每行对应一个测试用例的答案。如果存在合适的 $c_1, c_2, \ldots, c_m$ 序列,使得最终数组等于 $b_1, b_2, \ldots, b_n$,则输出 "YES";否则输出 "NO"。
答案可以用任意大小写形式输出(例如 "yEs"、"yes"、"Yes" 和 "YES" 都被认为是正确的正面回答)。
说明/提示
由 ChatGPT 4.1 翻译