CF1510H.Hard Optimization

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定 nn 个线段 [Li,Ri][L_i, R_i],所有 2n2n 个线段端点均为两两不同的整数。

这些线段构成“层状集”——任意两条线段要么互不相交,要么一条完全包含另一条。

你需要在每条线段 [Li,Ri][L_i, R_i] 内选择一个非空子线段 [li,ri][l_i, r_i],其中 Li≤li<ri≤RiL_i \le l_i < r_i \le R_i,使得所有选出的子线段两两不相交(但允许端点重合),并且使得它们长度之和 ∑i=1n(ri−li)\sum_{i=1}^n (r_i - l_i) 最大。

输入格式

第一行包含一个整数 nn(1≤n≤2⋅1031 \le n \le 2 \cdot 10^3),表示线段的数量。

接下来的 nn 行,每行包含两个整数 LiL_i 和 RiR_i(0≤Li<Ri≤1090 \le L_i < R_i \le 10^9),表示第 ii 条线段的两个端点。

所有 2n2n 个端点均为不同的整数。给定的线段集合是层状集。

输出格式

第一行输出最大可能的子线段长度和。

接下来的 nn 行,每行输出两个整数 lil_i 和 rir_i(Li≤li<ri≤RiL_i \le l_i < r_i \le R_i),表示第 ii 条线段中选出的子线段。

输入输出样例

  • 输入#1

    4
    1 10
    2 3
    5 9
    6 7

    输出#1

    7
    3 6
    2 3
    7 9
    6 7

说明/提示

下方的示例输入输出配有示意图。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页