4995.不醒人室

时间限制:3s 内存限制:256MB

你是一名前一天打完 CF,第二天还要去上课的大学生,但前一天打完 CF 后一天要早八实在是太痛苦了,因此你决定在课间小憩一下来使得自己能够不太困。

你今天一共 $n$ 节课,每节课 $b_i$ 时刻开始,$e_i$ 时刻结束。你会小憩 $m$ 次,$s_i$ 时刻开始睡,$t_i$ 时刻醒过来,睡醒之后你可以保持接下来 $2×(t_i−s_i)$ 分钟不困,但是超过这个时间你就会很困。每次小憩都会刷新你不困的时间段,而不会叠加。例如在 $[1,2]$ 时小憩,会让你在 $[2,4]$ 时间段不困。如果你又在 $[3,5]$ 小憩,那么你下一个不困的时间段为 $[5,9]$。

但你的课任老师都十分严厉,他们不想看到有人上课表现出很困的状态或是就在睡觉,因此你的小憩时间不能跟上课时间重合。例如你上课的时间是 $[1,3]$ 与 $[4,5]$,那你的小憩不能为 $[2,4]$,因为你会在第一节课上睡觉。但如果小憩时间为 $[3,4]$ 的话是可以被接受的,因为此时视为在时刻 $3$ 老师下课后的瞬间,你正好开始小憩,时刻 $4$ 老师走进教室,你正好醒来,因此老师并不会看到你上课睡觉,并且你在第二节课上不会很困。请注意时刻 $0$ 时你处于很困的状态。

因为你不想惹老师生气同时又想稍微休息下,因此你想知道你所拟定的计划是否能够满足要求。

输入格式(从终端/标准输入读取)

第一行一个整数 $T(1≤T≤10^4)$ ,表示测试数据组数。

对于每组数据,第一行两个整数 $n$ 和 $m(1≤n,m≤10^5),分别表示课的节数和你小憩的时间段。

$接下来 $n$ 行,每行两个整数 $b_i,e_i (0≤b_i \lt e_i ≤10^9)$,分别表示课的开始和结束时间。保证 0≤b_1\lt e_1 \lt b_2 \lt e_2 \lt … \lt b_n\lt e_n$。

接下来 $m$ 行,每行两个整数 $s_j, t_j(0≤s_j\lt t_j≤10^9)$,分别表示小憩的开始和结束时间。保证 $0≤s_1\lt t_1\lt s_2\lt t_2\lt …\lt s_m\lt t_m$。

保证对于所有数据,满足 $∑n≤5×10^5 ,∑m≤5×10^5$ 。

输出格式(输出至终端/标准输出)

如果存在一节课你会很困或就在睡觉,输出 $No$,否则输出 $Yes$。

输入样例

复制
2
3 2
30 45
60 90
120 180
0 30
90 120
3 2
30 45
60 90
120 180
0 20
90 120
 \n
 · \n
  ·  \n
  ·  \n
   ·   \n
 ·  \n
  ·   \n
 · \n
  ·  \n
  ·  \n
   ·   \n
 ·  \n
  ·   \n

输出样例

复制
Yes
No
   \n
  \n
来源: 2024“钉耙编程”中国大学生算法设计超级联赛(6)

提交题解

Please login first.

© 2025 FAQs