loj#P4051. 「POI2023 R1」Zapobiegliwy student
「POI2023 R1」Zapobiegliwy student
题目描述
题目译自 XXXI Olimpiada Informatyczna – I etap Zapobiegliwy student
在 Bajtocja 大学的科学节上,有 个不同的讲座,编号为 到 。每个讲座都在一个连续的时间段内进行。学生 Bajtazar 想要选择一些讲座来参加。他选择的讲座必须在不同的时间进行。
对于 Bajtazar 来说,所有的讲座都同样有趣。但他也想要防备一些意外的情况。他希望能够选择讲座的方式是,如果有一个(任意选择的)讲座被取消了,他还能从剩下的讲座中再选一个,而不会和他原来选择的讲座发生时间冲突。请你帮他选择最多的讲座数,满足上述条件。
形式化地说,如果 Bajtazar 决定选择 个互不相同且不冲突的讲座 ,那么对于每个 ,必须存在一个讲座 ,使得 ,并且讲座 $u_{1}, \ldots, u_{i-1}, v_{i}, u_{i+1}, \ldots, u_{k}$ 不冲突。两个讲座不冲突,当且仅当一个讲座刚好在另一个讲座结束的时候开始,或者更晚。Bajtazar 想要最大化这样选择的讲座数 。
输入格式
第一行包含一个整数 ,表示所有讲座的数量。接下来的 行描述了每个讲座的时间。第 行包含两个整数 ,表示第 个讲座的开始时间和结束时间。第 个讲座和第 个讲座不冲突,当且仅当 或者 。
输出格式
第一行输出一个整数,表示满足 Bajtazar 要求的最大可能的讲座数 。在接下来的 行中,每行包含两个整数 ,分别表 Bajtazar 选择的讲座编号和所对应的备选讲座的编号,对应于编号为 的讲座。你可以以任意顺序输出这些讲座对。 不需要互不相同。
8
1 5
3 10
4 8
9 12
11 16
14 15
20 22
15 21
3
1 3
4 6
8 7
Bajtazar 决定选择编号为 和 的讲座,分别在时间区间 , 和 进行。这些讲座之间没有冲突。此外:
- 第一个备选讲座,,在时间区间 进行。这个讲座与在时间区间 和 进行的讲座没有冲突。
- 第二个备选讲座,,在时间区间 进行。这个讲座与在时间区间 和 进行的讲座没有冲突。
- 第三个备选讲座,,在时间区间 进行。这个讲座与在时间区间 和 进行的讲座没有冲突。
样例 2
见附加文件下 [zap1ocen.in](file:zap1ocen.in) 和 [zap1ocen.out](file:zap1ocen.out)。
该样例满足 ,第 个讲座的时间区间为 。
样例 3
见附加文件下 [zap2ocen.in](file:zap2ocen.in) 和 [zap2ocen.out](file:zap2ocen.out)。
该样例满足 ,第 个的时间区间为 。
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务编号 | 限制 | 分值 |
|---|---|---|
| 无额外限制 |
如果只有第一行是正确的,你的程序将获得该测试点的 分数。如果第一行与标准答案相差 但备选讲座的选择是正确的,你的程序将获得该测试点的 分数。