CF1779D Boris and His Amazing Haircut
题目描述
Boris 认为国际象棋是一项无聊的游戏。因此,他提前离开了比赛,去理发店理发,因为他的头发有点乱。
他当前的头发可以用一个数组 $a_1,a_2,\ldots,a_n$ 来描述,其中 $a_i$ 表示第 $i$ 个位置头发的高度。他理想的发型可以用一个数组 $b_1,b_2,\ldots,b_n$ 以类似的方式描述。
理发师有 $m$ 把剃刀。每把剃刀有自己的尺寸,并且每把剃刀最多只能使用一次。在一次操作中,他选择一把剃刀并修剪 Boris 的一段头发。更正式地说,一次操作为:
- 选择一把尚未使用过的剃刀,设其尺寸为 $x$;
- 选择一个区间 $[l,r]$($1\leq l \leq r \leq n$);
- 对于每个 $l\leq i \leq r$,将 $a_i := \min(a_i, x)$;
注意,有些剃刀可能尺寸相同——理发师只能使用尺寸为 $x$ 的剃刀不超过该尺寸剃刀的数量。
他可以进行任意多次操作,只要每把剃刀最多使用一次,并且最后满足 $a_i = b_i$ 对于每个 $1 \leq i \leq n$。他不必使用所有剃刀。
你能判断理发师是否能将 Boris 的头发修剪成他想要的样子吗?
输入格式
每组测试数据包含多个测试用例。第一行包含测试用例的数量 $t$($1 \leq t \leq 20000$)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个正整数 $n$($3\leq n\leq 2\cdot 10^5$),表示数组 $a$ 和 $b$ 的长度。
第二行包含 $n$ 个正整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$),表示 Boris 当前的头发。
第三行包含 $n$ 个正整数 $b_1, b_2, \ldots, b_n$($1 \leq b_i \leq 10^9$),表示 Boris 理想的头发。
第四行包含一个正整数 $m$($1 \leq m \leq 2\cdot 10^5$),表示剃刀的数量。
第五行包含 $m$ 个正整数 $x_1,x_2, \ldots, x_m$($1 \leq x_i \leq 10^9$),表示每把剃刀的尺寸。
保证所有测试用例中 $n$ 的总和以及 $m$ 的总和不超过 $2\cdot 10^5$。
输出格式
对于每个测试用例,如果理发师可以将 Boris 的头发修剪成理想的样子,输出 "YES";否则输出 "NO"。
你可以用任意大小写输出答案。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答。
说明/提示
在第一个测试用例中,Boris 的头发初始为 $[3,3,3]$。理发师可以进行如下两步操作:
- 理发师用尺寸为 $1$ 的剃刀修剪区间 $[2,2]$,此时 Boris 的头发变为 $[3,1,3]$。
- 理发师用尺寸为 $2$ 的剃刀修剪区间 $[1,3]$,此时 Boris 的头发变为 $[2,1,2]$,这就是理想发型。
在第三个测试用例中,不需要进行任何操作,因为 Boris 的头发已经是理想的样子。
在第四个测试用例中,无法通过任何操作将 $[1,1,1]$ 的第三个元素变为 $2$,因此无法达到目标。
由 ChatGPT 4.1 翻译