#P14004. [eJOI 2025] Vacation
[eJOI 2025] Vacation
Description
Anton 和他的朋友们计划一起去度假。地点已经选好,但具体日期很难统一。
共有 位朋友,每人事先提交了自己计划请假的日期。第 位朋友原本安排的请假区间为从第 天到第 天(含两端)。为了最大化大家在一起的时间,每位朋友可以将自己的请假区间整体向前或向后平移:具体地,第 位朋友可以选择一个整数 ,把他的请假区间移动为 。其中, 表示比原计划更晚请假, 表示更早请假, 表示保持原计划不变。
朋友们也意识到领导不会喜欢他们频繁调整,因此他们只会在总位移不超过某个整数 的前提下移动自己的请假区间。形式化地,他们必须满足
请帮助他们在最优调整的情况下,计算所有人能够共同在一起的天数的最大值。
实现细节
你需要实现函数 plan_vacation:
int plan_vacation(int N, std::vector<int> L, std::vector<int> R, long long K)
- :朋友人数;
- :长度为 的正整数向量,第 个数表示该朋友原计划请假的第一天;
- :长度为 的正整数向量,第 个数表示该朋友原计划请假的最后一天;
- :允许的总位移上限,即 的最大值。
该函数在每个测试中调用一次。它需要返回所有朋友能共同在一起的最大天数;如果完全无法做到让所有人同日有空,则返回 。
Input Format
输入格式如下:
- 第 1 行:两个整数—— 与 ;
- 第 到第 行:每行两个整数—— 与 。
Output Format
输出格式如下:
- 第 1 行:一个整数——函数的返回值。
3 3
1 3
5 9
2 5
2
Hint
示例
考虑如下调用:
plan_vacation(3, {1, 5, 2}, {3, 9, 5}, 3)
三位朋友原计划的请假区间分别为 、、。因此,可以让朋友 把区间整体后移 天、朋友 把区间整体前移 天,从而得到 、、。此时三人于第 天与第 天均可同时在一起,共有 天。可以证明在 的限制下无法做得更好,因此函数应返回 。
约束
子任务
| 子任务 | 分值 | 依赖子任务 | 附加约束 |
|---|---|---|---|
| 0 | - | 样例。 | |
| 1 | 7 | ||
| 2 | 11 | 1 | |
| 3 | 6 | - | |
| 4 | 13 | 0 | , , |
| 5 | 18 | ||
| 6 | 29 | 0, 4, 5 | |
| 7 | 16 | 0–6 | 无附加约束。 |
翻译由 ChatGPT-5 完成。
京公网安备 11011102002149号