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

    ID: 14045 远端评测题 1000ms 1000MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>动态规划 DP线段树树状数组2025ROI(俄罗斯)

「ROI 2025 Day1」天狼星的换班

题目描述

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

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

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

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

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

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

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

输入格式

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

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

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

保证所有数据组的 nn 和 kk 之和均不超过 5⋅1055 \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 位员工出发,他会修好房间 11 到 33。然后派第 11 位员工出发,他前往房间 44,发现它仍需维修,于是修好他负责范围内剩余的房间。最终,所有房间都被修好。

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

数据范围

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

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

子任务 分值 附加限制
11 55 K≤10 000K \leq 10\,000,mi=lim_i = l_i
22 N≤500N \leq 500,k≤8k \leq 8
33 22 n≤18n \leq 18,K≤500K \leq 500
44 1212 n≤50n \leq 50,K≤50K \leq 50
55 99 n≤150n \leq 150,K≤150K \leq 150
66 88 N≤500N \leq 500,K≤500K \leq 500
77 66 K≤10 000K \leq 10\,000,每个员工负责的范围包含房间 11 或 nn
88 1818 K≤10 000K \leq 10\,000,每个员工负责的范围内至少有一个房间只由他负责
99 33 每个员工负责的范围内至少有一个房间只由他负责
1010 44 K≤10 000K \leq 10\,000,任意 i,ji, j,ri−li=rj−ljr_i - l_i = r_j - l_j
1111 K≤10 000K \leq 10\,000,任意 mim_i 等于 lil_i 或 rir_i
1212 n≤10 000n \leq 10\,000,K≤10 000K \leq 10\,000
1313 66 K≤10 000K \leq 10\,000
1414 无附加限制