CF1187D Subarray Sorting

题目描述

给定一个数组 $a_1, a_2, \dots, a_n$ 和一个数组 $b_1, b_2, \dots, b_n$。 每次操作,你可以将数组 $a$ 的任意一个子数组 $a[l \dots r]$ 按非递减顺序排序。 例如,如果 $a = [4, 2, 2, 1, 3, 1]$,你选择子数组 $a[2 \dots 5]$,那么数组会变成 $[4, 1, 2, 2, 3, 1]$。 请你判断,是否可以通过若干次(可以为零次)上述操作,将数组 $a$ 变成数组 $b$。

输入格式

第一行包含一个整数 $t$($1 \le t \le 3 \cdot 10^5$),表示询问的组数。 每组询问的第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$)。 每组询问的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$)。 每组询问的第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($1 \le b_i \le n$)。 保证所有询问中 $\sum n \le 3 \cdot 10^5$。

输出格式

对于每组询问,如果可以通过若干次操作将数组 $a$ 变成数组 $b$,输出 YES(大小写均可);否则输出 NO(大小写均可)。

说明/提示

在第一个测试用例中,可以先将子数组 $a_1 \dots a_5$ 排序,此时 $a$ 变为 $[1, 1, 4, 4, 7, 5, 6]$,然后再将子数组 $a_5 \dots a_6$ 排序。 由 ChatGPT 4.1 翻译