CF1904D2.Set To Max (Hard Version)

传统题 时间 2000 ms 内存 256 MiB 9 尝试 3 已通过 1 标签

Set To Max (Hard Version)

题目描述

这是该问题的困难版本。两种版本的区别仅在于 nn 的限制和时间限制。只有在所有版本的问题都被解决后,你才能进行 hack。

给定两个长度为 nn 的数组 aabb

你可以进行如下操作若干次(也可以一次都不做):

  1. 选择 llrr,满足 1lrn1 \leq l \leq r \leq n
  2. x=max(al,al+1,,ar)x = \max(a_l, a_{l+1}, \ldots, a_r)
  3. 对所有 lirl \leq i \leq r,令 ai:=xa_i := x

请判断你是否可以通过若干次操作将数组 aa 变为数组 bb

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n21051 \leq n \leq 2 \cdot 10^5),表示数组的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ain1 \leq a_i \leq n),表示数组 aa 的元素。

第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \ldots, b_n1bin1 \leq b_i \leq n),表示数组 bb 的元素。

保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,如果可以通过若干次操作将 aa 变为 bb,输出 "YES"(不含引号);否则输出 "NO"(不含引号)。

你可以以任意大小写输出 "YES" 和 "NO"(例如 "yES"、"yes" 和 "Yes" 都会被识别为肯定回答)。

说明/提示

在第一个测试用例中,我们可以通过一次操作 (l,r)=(2,3)(l, r) = (2, 3) 得到数组 bb

在第二个测试用例中,可以证明无论进行多少次操作都无法得到数组 bb

在第三个测试用例中,我们可以先进行一次操作 (l,r)=(2,5)(l, r) = (2, 5),再进行一次操作 (l,r)=(1,3)(l, r) = (1, 3),从而得到数组 bb

在第四个和第五个测试用例中,可以证明无论进行多少次操作都无法得到数组 bb

由 ChatGPT 4.1 翻译

样例

5
5
1 2 3 2 4
1 3 3 2 4
5
3 4 2 2 4
3 4 3 4 4
5
3 2 1 1 1
3 3 3 2 2
2
1 1
1 2
3
1 1 2
2 1 2
YES
NO
YES
NO
NO

在线编程 IDE

建议全屏模式获得最佳体验