#P14589. [Bulgarian 2026]Free Time
[Bulgarian 2026]Free Time
题目描述
Deni 的日程非常繁忙,她把每天的安排精确到了毫秒。
每天共有 个活动。对于编号为 的活动(),它占用的时间段是从第 毫秒到第 毫秒(含端点)。
在任意一个毫秒时刻,Deni 最多只能做一项活动;如果这个时刻不属于任何允许的活动区间,她就休息。
接下来会有 天的限制安排。
在第 天(),她只被允许做编号在 到 之间(含端点)的活动。
Deni 是个工作狂,所以只要某一毫秒落在任意一个被允许活动的时间区间内,她就会在这毫秒工作。她可以随时切换活动,甚至可以重新开始做某项更早时刻安排的活动;因此对于某一天而言,真正重要的只是这些被允许区间的并集长度。
请你对于每一天,求出 Deni 会忙碌多少毫秒。
你需要实现程序 freetime。
实现要求
你需要实现函数:
std::vector<int> solve(
std::vector<int> L, std::vector<int> R,
std::vector<int> X, std::vector<int> Y
)
其中:
L和R:长度为 的数组,第 个活动的时间区间为 ;X和Y:长度为 的数组,第 天只允许活动编号落在区间 内。
函数需要返回一个长度为 的数组。
返回值中第 个数应为:在第 天里,所有允许活动区间的并集中包含的毫秒数。
限制
- 对所有 ,有
- 对所有 ,有
子任务
| 子任务编号 | 分值 | 需要通过的前置子任务 | 其他限制 | ||
|---|---|---|---|---|---|
| 0 | 无 | - | 样例 | ||
| 1 | 4 | ||||
| 2 | 1 | 无 | |||
| 3 | 0–1 | ||||
| 4 | 20 | 无 | |||
| 5 | 7 | 无 | - | 对每个 ,都有 ;任意两个区间要么互不相交,要么一个包含另一个,且不存在完全相同的区间 | |
| 6 | 30 | 无 | |||
| 7 | 4 | 1–2 | - | 对所有 ,都有 | |
| 8 | 27 | 0–7 | 无 | ||
注:原 PDF 表格在文本提取时有轻微错位,上表按可辨识内容整理。
样例
输入
5
1 5
2 7
9 11
5 10
2 4
15
0 0
0 1
0 2
0 3
0 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4
输出
5
7
10
11
11
6
9
10
10
3
7
10
6
9
3
说明
共有 5 个活动区间:
例如:
- 查询 表示只允许编号 的活动,对应区间并集为 ,总长度为 ;
- 查询 对应区间并集为 ,总长度为 ;
- 查询 只保留区间 ,总长度为 。