310883: CF1904D2. Set To Max (Hard Version)
Description
This is the hard version of the problem. The only differences between the two versions of this problem are the constraints on $n$ and the time limit. You can make hacks only if all versions of the problem are solved.
You are given two arrays $a$ and $b$ of length $n$.
You can perform the following operation some (possibly zero) times:
- choose $l$ and $r$ such that $1 \leq l \leq r \leq n$.
- let $x=\max(a_l,a_{l+1},\ldots,a_r)$.
- for all $l \leq i \leq r$, set $a_i := x$.
Determine if you can make array $a$ equal to array $b$.
InputEach test contains multiple test cases. The first line contains an integer $t$ ($1 \leq t \leq 10^4$) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer $n$ ($1 \le n \le 2 \cdot 10^5$) — the length of the arrays.
The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le n$) — the elements of array $a$.
The third line contains $n$ integers $b_1, b_2, \ldots, b_n$ ($1 \le b_i \le n$) — the elements of array $b$.
It is guaranteed that the sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.
OutputFor each test case, output "YES" (without quotes) if you can make $a$ into $b$ using any number of operations, and "NO" (without quotes) otherwise.
You can output "YES" and "NO" in any case (for example, strings "yES", "yes" and "Yes" will be recognized as a positive response).
ExampleInput5 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 2Output
YES NO YES NO NONote
In the first test case, we can achieve array $b$ by applying a single operation: $(l,r)=(2,3)$.
In the second test case, it can be shown we cannot achieve array $b$ in any amount of operations.
In the third test case, we can achieve array $b$ by applying two operations: $(l,r)=(2,5)$. followed by $(l,r)=(1,3)$.
In the fourth and fifth test cases, it can be shown we cannot achieve array $b$ in any amount of operations.
Output
这是一个难题的较难版本。这个问题的两个版本之间的唯一区别是对n的限制和时限。只有当问题的所有版本都被解决时,你才能进行黑客攻击。
输入输出数据格式:
输入:
输入的第一行包含一个整数t(1≤t≤10^4)——测试用例的数量。测试用例的描述如下。
每个测试用例的第一行包含一个单个整数n(1≤n≤2×10^5)——数组的长度。
第二行包含n个整数a1,a2,…,an(1≤ai≤n)——数组a的元素。
第三行包含n个整数b1,b2,…,bn(1≤bi≤n)——数组b的元素。
保证所有测试用例的n之和不超过2×10^5。
输出:
对于每个测试用例,如果可以使用任意数量的操作将a变为b,则输出“YES”(不带引号),否则输出“NO”(不带引号)。
示例:
输入:
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题目大意: 这是一个难题的较难版本。这个问题的两个版本之间的唯一区别是对n的限制和时限。只有当问题的所有版本都被解决时,你才能进行黑客攻击。 输入输出数据格式: 输入: 输入的第一行包含一个整数t(1≤t≤10^4)——测试用例的数量。测试用例的描述如下。 每个测试用例的第一行包含一个单个整数n(1≤n≤2×10^5)——数组的长度。 第二行包含n个整数a1,a2,…,an(1≤ai≤n)——数组a的元素。 第三行包含n个整数b1,b2,…,bn(1≤bi≤n)——数组b的元素。 保证所有测试用例的n之和不超过2×10^5。 输出: 对于每个测试用例,如果可以使用任意数量的操作将a变为b,则输出“YES”(不带引号),否则输出“NO”(不带引号)。 示例: 输入: 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