CF1904D2.Set To Max (Hard Version)
普及+/提高
通过率:0%
时间限制:4.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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≤l≤r≤n.
- let x=max(al,al+1,…,ar).
- for all l≤i≤r, set ai:=x.
Determine if you can make array a equal to array b.
这是该问题的困难版本。两个版本之间的唯一区别在于对 n 的约束以及时间限制。仅当该问题的所有版本均被解决后,你才可以进行 Hack。
给你两个长度为 n 的数组 a 和 b。
你可以执行以下操作若干次(可能为零次):
- 选择满足 1≤l≤r≤n 的 l 和 r;
- 令 x=max(al,al+1,…,ar);
- 对所有满足 l≤i≤r 的下标 i,将 ai 赋值为 x。
判断是否能通过若干次上述操作使数组 a 变为数组 b。
输入格式
Each test contains multiple test cases. The first line contains an integer t (1≤t≤104) — 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≤n≤2⋅105) — the length of the arrays.
The second line contains n integers a1,a2,…,an (1≤ai≤n) — the elements of array a.
The third line contains n integers b1,b2,…,bn (1≤bi≤n) — the elements of array b.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.
每个测试包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105),表示数组的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n),表示数组 a 的元素。
第三行包含 n 个整数 b1,b2,…,bn(1≤bi≤n),表示数组 b 的元素。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
For 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).
对于每个测试用例,如果你能通过任意次数的操作将 a 变为 b,则输出 "YES"(不带引号),否则输出 "NO"(不带引号)。
你可以以任意大小写形式输出 "YES" 和 "NO"(例如,字符串 "yES"、"yes" 和 "Yes" 均会被识别为肯定回答)。
输入输出样例
输入#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
输出#1
YES NO YES NO NO
说明/提示
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.
在第一个测试用例中,我们可以通过执行一次操作 (l,r)=(2,3) 得到数组 b。
在第二个测试用例中,可以证明:无论执行多少次操作,都无法得到数组 b。
在第三个测试用例中,我们可以通过执行两次操作得到数组 b:先执行 (l,r)=(2,5),再执行 (l,r)=(1,3)。
在第四和第五个测试用例中,可以证明:无论执行多少次操作,都无法得到数组 b。
输入解题思路,AI测评打分。不知道怎么写?