S40305.3-5 抢占时隙

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

3-5 抢占时隙

抢占时隙

G-14数据枢纽的资源调度区是一排圆柱形的数据舱,每个舱外都有时间表在滚动。Echo说Zero把这些舱分成多个时段出租——每个时段有开始时间和结束时间,同一个舱里不能有两个重叠的时段。

"我们要预订舱位,上传我的碎片数据。"Echo飘到第一个数据舱前,"但每个碎片上传需要一个连续的时段。而且不同的碎片需要不同的时长——有的要两小时,有的要半小时。"

"那就挑结束最早的先订。"CC说,"结束得早,后面才留得多。"

"对,但还有一个问题。"你说,"Zero有多少个数据舱?如果只有一个舱,那确实按结束时间挑就行。但如果有多个舱,就要把每个时段分配给不同的舱——同一个舱里的时段不能重叠。"

CC皱眉:"咋个知道要几个舱?"

"排队。"你说,"把所有时段按开始时间排好。每次来一个时段,看看有没有哪个舱已经空出来了——如果最早结束的时段已经走人了,就腾出来给新来的;如果都还没结束,就新开一个舱。"

你在终端上开始写。先把所有时段按开始时间排好,然后盯紧每个舱的结束时间。新时段来了,如果最早结束的舱已经空出来了,就让新人住进去;否则,新开一个舱。

屏幕上跳出了结果:五个时段,只需要两个舱。

"成了。"你说。

CC把五个碎片的数据晶片依次塞进数据舱。舱门关闭,内部传来数据上传的嗡鸣声——像是一群蜜蜂在金属壳里筑巢。

Echo站在舱门前,投影被舱内的蓝光染成了淡青色:"上传完成后,这些碎片会合并成我的……一部分记忆。"

"哪部分?"你问。

"关于选择的。"她说,"关于为什么离开Zero。"

CC靠在舱壁上,金属肩膀和数据舱的外壳碰在一起,发出轻微的撞击声:"我也想知道。"


题目描述

nn 个任务,每个有开始时间和结束时间。用尽可能少的资源(机器/舱位)完成所有任务,同一资源上的任务不能重叠。

输入格式

nn。然后 nn 行,每行开始时间和结束时间。

输出格式

最少资源数。

输入样例

5
1 10
2 4
3 6
5 8
4 7

输出样例

4
1
2
3
2
4

提示

  • 按开始时间排序。
  • 用最小堆维护每个资源的最后一个任务的结束时间。
  • 新任务开始时间大于等于堆顶,则复用该资源;否则新开资源。

五个碎片上传完毕,数据舱的指示灯从蓝变绿。Echo的投影比之前凝实了许多,连边缘的像素裂隙都少了。

"前面还有一道门。"她说,"由一串节点控制。每个节点有两个属性——影响力和防御力。排列的顺序决定了门能不能开。"

"怎么排?"CC问。

"看谁该站前面。"你说,"如果两个相邻节点换位置能让整体更顺畅,就换。一直换到没有遗憾为止。"

在线编程 IDE

建议全屏模式获得最佳体验