CF1718D Permutation for Burenka
题目描述
如果一个数组里面任意两个数字都是不同的,我们把这种数组称作为一个“纯数组”。举个例子。$[1,7,9]$ 是纯数组,$[1,3,3,7]$ 不是,因为 $3$ 出现了两次。
如果两个纯数组 $b,c$ 的长度相等,并且对于所有数组中的 $l$ 和 $r (1 \leq l \leq r \leq n)$,都满足
$\text{argmax}([b_l,b_{l+1}, \ldots, b_r])= \text{argmax}([c_l,c_{l+1}, \ldots, c_r])$
则它们“类似”。
$\text{argmax(x)}$ 返回值是 $x$ 中最大值的下标。举个例子,$\text{argmax}([1337,179,57])=1.$
最近,Tonya 发现 Burenka 非常喜欢长度为 $n$ 的排列 $p$。 Tonya 为了让她开心,于是给她一个类似于 $p$ 的数组 $a$。他已经修复了 $a$ 的一些元素,但恰好缺少 $k$ 个元素(在这些位置 $a_i$ 暂时等于 $0$)。保证$k≥2$。此外,他有一个由 $k-1$ 个数字组成的集合 $S$。
Tonya 意识到他缺少一个数字来填补 $a$ 的空白,所以他决定买下它。他有 $q$ 个购买填补数字 $d$ 的选项。如果可以用来自 $S$ 的数字和 $d$ 替换 $a$ 中的所有零将 $a$ 变成了一个类似于 $p$ 的纯数组,Tonya 就认为数字 $d$ 适合他。对于 $d$ 的每个选项,输出这个数字是否适合他。
输入格式
第一行包含单个整数 $ t $ ( $ 1 \le t \le 10^4 $ ) 代表测试用例的数量。测试用例的描述如下。
每个测试用例的第一行包含两个整数 $ n $ 和 $ q $ ( $ 1 \le n, q \le 3 \cdot 10^5 $ )。
每个输入测试用例的第二行包含 $ n $ 个整数 $ p_1, p_2, \ldots, p_n $ ( $ 1 \le p_i \le n $ ) — 表示 Burenka 喜欢的排列。
每个测试用例的第三行包含 $ n $ 个整数 $ a_1, a_2, \ldots, a_n $ ( $ 0 \le a_i \le 10^6 $ ) — 表示 Tonya 的数组,其中 $ 0 $ 表示缺失的元素。保证有两个位置 $ i, j $ $ (1 \le i, j \le n, i \ne j) $ 使得 $ a_i = 0, a_j = 0 $ ,这意味着 $ k \geq 2$ 。
每个测试用例的第四行包含 $ k - 1 $ 个不同的整数 $ s_1, s_2, \ldots, s_{k-1} $ ( $ 1 \le s_i \le 10^6 $ ) — Tonya 集合的元素 $ S $ .
接下来的 $ q $ 行中的每一行都包含一个整数 $ d $ ( $ 1 \le d \le 10^6 $ ) — Tonya 计划购买的数字。
保证对于每个给定的 $ d $ ,可以用 $ S $ 中的数字和数字 $ d $ 来填充 $ a $ 中的空白以获得纯数组。
保证所有测试用例中 $n$ 和 $q$ 之和不超过 $3\cdot 10^5$。
输出格式
输出 $q$ 行。对于每个值 $ d $ ,如果有办法填充数组 $ a $ 来使其类似于 $ p $ ,则输出 `YES` ,否则输出 `NO`。
说明/提示
在 $ d = 9 $ 的第一个测试用例中,可以得到 $ a = [5, 9, 7, 6] $ ,可以证明 $ a $ 类似于 $ p $ ,并且可以证明 $ d=1 $ 和 $d=4$ 时没有答案。
在 $ d = 1 $ 的第二个测试用例中,你可以得到 $ a = [1, 5, 10, 9, 3] $ ,对于 $ d = 8 $ ,您可以得到 $ a = [3, 5, 10 , 9, 8] $ ,可以证明对于 $ d = 11 $ 没有答案。