#4473. 数字分配问题

数字分配问题

当前没有测试数据。

题目背景

在数据处理与资源分配场景中,常常需要将一组元素与具有特定约束条件的容器进行匹配。本题模拟了这一经典场景:给定若干个具有数值范围限制的“盒子”和一组待分配的“数字”,判断是否存在一种一一对应的分配方式,使得每个数字都能满足其所在盒子的范围要求。

题目描述

现有 TT 组测试数据。对于每组测试数据:

  • 首先给定一个正整数 nn,表示盒子的数量(同时也是数字的数量)。
  • 接下来的 nn 行,每行包含两个整数 LiL_iRiR_i1in1 \leq i \leq n),分别表示第 ii 个盒子能够容纳的数字的最小值最大值(即数字 xx 需满足 LixRiL_i \leq x \leq R_i 才能放入第 ii 个盒子)。
  • 最后一行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示待分配给盒子的 nn 个数字。

请你判断是否存在一种分配方案,将这 nn 个数字不重复地分配到 nn 个盒子中,且每个数字都满足其对应盒子的范围限制。若存在这样的方案,输出 YES;否则,输出 NO

输入格式

第一行一个整数 TT1T1001 \leq T \leq 100),表示测试数据的组数。

对于每组测试数据:

  1. 第一行一个整数 nn1n10001 \leq n \leq 1000),表示盒子和数字的数量。
  2. 接下来 nn 行,每行两个整数 LiL_iRiR_i1LiRi1091 \leq L_i \leq R_i \leq 10^9),描述第 ii 个盒子的范围。
  3. 最后一行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1aj1091 \leq a_j \leq 10^91jn1 \leq j \leq n),表示待分配的数字。

输出格式

对于每组测试数据,在单独的一行中输出结果:YESNO

样例输入

2
3
1 3
2 4
3 5
2 3 4
2
1 2
1 2
1 3

样例输出

YES
NO

样例解释

第一组测试数据

  • 盒子范围分别为:[1,3]、[2,4]、[3,5]
  • 待分配数字:2、3、4
  • 可行分配方案:
    • 将数字 2 分配给第 1 个盒子(满足 1231 \leq 2 \leq 3
    • 将数字 3 分配给第 2 个盒子(满足 2342 \leq 3 \leq 4
    • 将数字 4 分配给第 3 个盒子(满足 3453 \leq 4 \leq 5
  • 因此输出 YES

第二组测试数据

  • 可以证明无论怎么分配都不能达到要求

数据范围与提示

  • 数据规模
    • 测试数据组数 T100T \leq 100,每组数据中 n1000n \leq 1000,总数据量(所有测试数据的 nn 之和)不超过 10510^5,确保算法时间复杂度在 O(nlogn)O(n \log n) 级别时可通过。