CF2034G2.Simurgh's Watch (Hard Version)
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
传说中的神鸟 Simurgh 负责守护一片辽阔的土地,她为此招募了 n 名机敏的战士。每位战士都需要在特定的时间段 [li,ri] 内保持警戒,其中 li 代表起始时间(包含),ri 代表结束时间(包含),两者均为正整数。
Simurgh 信任的顾问 Zal 担心,如果多个战士同时在岗且都穿着相同的颜色,那么他们之间可能会难以区分,从而导致混乱。为解决这一问题,在每个整数时刻 t,如果有多个战士在岗,必须确保至少有一种颜色仅被其中一个战士穿着。
任务是找出所需的最少颜色数量,并为每个战士的时间段 [li,ri] 分配一种颜色 ci,使得对于包含在至少一个时间段内的每个整数时间点 t,总有一种颜色只被一个时间段在t时刻使用。
输入格式
第一行输入一个整数 t(1≤t≤104),表示测试用例的数量。
对于每个测试用例:
- 第一行包含一个整数 n(1≤n≤2⋅105),表示 Simurgh 招募的战士数量。
- 随后的 n 行中,每行包含两个整数 li 和 ri(1≤li≤ri≤109),表示第 i 位战士的警戒时间段。
所有测试用例中的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例:
- 输出所需的最少颜色数量 k。
- 接下来输出一行,包括 n 个整数 ci(1≤ci≤k),每个 ci 表示分配给第 i 位战士的颜色。
输入输出样例
输入#1
3 5 1 4 2 8 3 7 5 10 6 9 5 1 5 2 6 3 7 4 7 6 7 5 4 9 8 17 2 15 12 19 6 13
输出#1
2 1 2 2 1 2 2 1 2 2 2 1 3 1 1 2 3 1
说明/提示
我们可以将每位战士的警戒时间段看作 X 轴上的一个区间。
以下示例展示了如何为各个测试用例的区间着色(区域只有在某时间点,仅某种颜色出现时该区域才被染色):
-
测试用例 1:

-
测试用例 2:

-
测试用例 3:

本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?