#P12502. 「ROI 2025 Day1」天狼星的换班

    ID: 12286 Type: RemoteJudge 1000ms 1000MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>动态规划 DP线段树树状数组2025ROI(俄罗斯)

「ROI 2025 Day1」天狼星的换班

题目描述

译自 ROI 2025 Day1 T2. Пересменка в Сириусе

你有没有好奇过,为什么天狼星教育中心的两期项目之间总会隔上几天?答案很简单:员工们需要在这段时间里把宿舍楼的房间整理一新,为下一期项目做准备!

天狼星酒店的某层楼有 nn 个房间,编号从 11nn。每次教育项目结束后,这些房间都需要进行维修。
为此,中心雇佣了 kk 名员工,编号从 11kk。每位员工负责一段房间范围,从 lil_irir_i(包含两端),并且每人有一个固定的起点房间 mim_i,他们必须从这个房间开始检查和维修。不同员工的负责范围可能会有重叠,甚至完全相同。

员工们会按照某种顺序从基地出发去维修房间。每次只有前一位员工返回基地后,下一位员工才会出发。

当第 ii 位员工出发时,他会先前往起点房间 mim_i

  • 如果这个房间仍需维修,员工会修好它,然后继续检查并维修他负责范围 lil_irir_i 内所有仍需维修的房间。完成后,他返回基地。此时,他负责的整个范围内的房间都不再需要维修。
  • 如果起点房间 mim_i 已经被其他先出发的员工修好,员工会直接返回基地,寄希望于同事们已经顺便修好了他负责范围内的其他房间。但实际上,他负责范围内可能仍有房间需要维修。

你的任务是判断,是否能通过合理安排员工的出发顺序,让所有 11nn 的房间最终都被修好。

输入格式

输入包含多组数据。第一行是一个整数 tt (1t105)(1 \leq t \leq 10^5),表示数据组数。接着是每组数据的描述。

每组数据的第一行包含两个整数 nnkk (1n,k5105)(1 \leq n, k \leq 5 \cdot 10^5),分别表示房间数量和员工数量。

接下来的 kk 行,每行包含三个整数 li,mi,ril_i,m_i,r_i (1limirin)(1 \leq l_i \leq m_i \leq r_i \leq n),分别表示第 ii 位员工负责范围的起点房间、必须开始检查的起点房间,以及范围的终点房间。

保证所有数据组的 nnkk 之和均不超过 51055 \cdot 10^5

输出格式

对每组数据,输出单独的一行。如果可以修好所有房间,输出 YES;否则输出 NO

2
5 2
3 4 5
1 3 3
5 3
1 2 4
2 4 5
3 3 3
YES
NO

提示

样例解释

在第一组数据中,先派第 22 位员工出发,他会修好房间 1133。然后派第 11 位员工出发,他前往房间 44,发现它仍需维修,于是修好他负责范围内剩余的房间。最终,所有房间都被修好。

在第二组数据中,无法找到一个合适的员工出发顺序来修好所有房间。

数据范围

NN 为所有数据组的 nn 之和,KK 为所有数据组的 kk 之和。

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制
11 55 K10000K \leq 10\,000mi=lim_i = l_i
22 N500N \leq 500k8k \leq 8
33 22 n18n \leq 18K500K \leq 500
44 1212 n50n \leq 50K50K \leq 50
55 99 n150n \leq 150K150K \leq 150
66 88 N500N \leq 500K500K \leq 500
77 66 K10000K \leq 10\,000,每个员工负责的范围包含房间 11nn
88 1818 K10000K \leq 10\,000,每个员工负责的范围内至少有一个房间只由他负责
99 33 每个员工负责的范围内至少有一个房间只由他负责
1010 44 K10000K \leq 10\,000,任意 i,ji, jrili=rjljr_i - l_i = r_j - l_j
1111 K10000K \leq 10\,000,任意 mim_i 等于 lil_irir_i
1212 n10000n \leq 10\,000K10000K \leq 10\,000
1313 66 K10000K \leq 10\,000
1414 无附加限制