#P13297. 相似数组判断
相似数组判断
我们称一个数组 纯(pure),如果其中所有元素两两不同。
例如, 是纯的, 不是纯的(因为元素 出现了两次)。
两个纯数组 相似(similar) 当且仅当它们长度相同(记为 ),并且对所有下标对 满足 ,都有
$$\operatorname{argmax}\big([\,b_l,b_{l+1},\dots,b_r\,]\big) = \operatorname{argmax}\big([\,c_l,c_{l+1},\dots,c_r\,]\big),$$其中 表示序列 中 最大元素的下标(对纯数组该下标唯一)。
例如,$\operatorname{argmax}([3,4,2])=2,\ \operatorname{argmax}([1337,179,57])=1$。
Tonya 得知 Burenka 喜欢一个长度为 的排列 ( 是 的一个排列)。他想送她一个与 相似 的数组 。目前 中有一些元素已被固定,但恰好有 个位置为空(这些位置暂时令 ),并且保证 。另有一个集合 ,包含 个两两不同的数字。
Tonya 发现自己还缺最后 一个数字用于填满 中的空位,所以他打算购买这个数。他有 个可选的购买数字 。Tonya 认为一个数 是合适的,当且仅当存在一种方式,用 中的 个数 和 该数字 去替换 中所有的 ,使得
- 最终得到的 是纯数组(元素两两不同),且
- 最终的 与排列 相似。
对每个候选的 ,判断它是否合适。
输入格式
首行一个整数 ,表示测试组数,满足
对每组测试:
-
第一行两个整数 ,满足
$$1\le n\le 3\times 10^5,\quad 1\le q\le 3\times 10^5.$$ -
第二行给出排列 ,满足
$$p\text{ 是 }[1..n]\text{ 的排列} \ \Longleftrightarrow\ 1\le p_i\le n\ \text{且 }p_i\text{ 两两不同}.$$ -
第三行给出数组 ,满足
$$0\le a_i\le 2\times 10^9,\quad \exists\, i\ne j:\ a_i=a_j=0$$(即空位数 )。
-
第四行给出 个互不相同的整数 ,满足
-
接下来 行,每行一个整数 ,满足
保证条件: 对于每个给定的 ,总可以用 中的 个互异数字填满 的 个空位(即能使结果成为纯数组)。
全局约束: 所有测试中 且 。
输出格式
对每个测试的每个查询 ,若存在一种填充方式使最终 为纯数组且与 相似,则输出 YES 否则输出 NO。
样例
4
4 3
1 4 3 2
5 0 7 0
6
9
1
4
5 3
1 2 5 4 3
0 5 10 0 0
3 9
1
8
11
5 2
1 4 3 2 5
0 0 0 0 0
7 9 1 5
6
100
4 2
4 1 3 2
0 5 3 0
2
4
6
YES
NO
NO
YES
YES
NO
YES
YES
NO
NO
说明:
- 样例 1 的第一组:若取 ,可得到 ,可以证明该 与 相似;而 、 时无解。
- 样例 2 的第二组: 时可得 ; 时可得 ; 时不可行。
子任务
| 子任务 | 附加限制 | 分值 |
|---|---|---|
| 1 | 10 | |
| 2 | 空位数 恰为 ;其它与总约束一致。 | 20 |
| 3 | 只有一个查询()。 | 30 |
| 4 | 满约束:,多次查询。 | 40 |
相关
在下列比赛中: