CF2034G2.Simurgh's Watch (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

传说中的神鸟 Simurgh 负责守护一片辽阔的土地,她为此招募了 nn 名机敏的战士。每位战士都需要在特定的时间段 [li,ri][l_i, r_i] 内保持警戒,其中 lil_i 代表起始时间(包含),rir_i 代表结束时间(包含),两者均为正整数。

Simurgh 信任的顾问 Zal 担心,如果多个战士同时在岗且都穿着相同的颜色,那么他们之间可能会难以区分,从而导致混乱。为解决这一问题,在每个整数时刻 tt,如果有多个战士在岗,必须确保至少有一种颜色仅被其中一个战士穿着。

任务是找出所需的最少颜色数量,并为每个战士的时间段 [li,ri][l_i, r_i] 分配一种颜色 cic_i,使得对于包含在至少一个时间段内的每个整数时间点 tt,总有一种颜色只被一个时间段在tt时刻使用。

输入格式

第一行输入一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试用例的数量。

对于每个测试用例:

  • 第一行包含一个整数 nn(1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5),表示 Simurgh 招募的战士数量。
  • 随后的 nn 行中,每行包含两个整数 lil_i 和 rir_i(1≤li≤ri≤1091 \leq l_i \leq r_i \leq 10^9),表示第 ii 位战士的警戒时间段。

所有测试用例中的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例:

  • 输出所需的最少颜色数量 kk。
  • 接下来输出一行,包括 nn 个整数 cic_i(1≤ci≤k1 \leq c_i \leq k),每个 cic_i 表示分配给第 ii 位战士的颜色。

输入输出样例

  • 输入#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测评打分。不知道怎么写?

首页