欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42702.27-2 调度任务
27-2 调度任务
调度任务
序列切完了,但每段内部的任务还要调度——哪些先做,哪些后做,哪些可以并行。
"像工厂。"CC说,"多个机床,多个零件,要排顺序。"
"对。"你说,"但我们不是工厂。我们是反抗军。"
"反抗军也要排顺序。"CC说,"谁先上,谁后上,谁掩护。"
"那咋排?"
"斜率优化。"你说,"每个任务有截止时间和惩罚。如果超时,惩罚累加。我们要排一个顺序,让总惩罚最小。"
"斜率?"
"对。"你说,"为前个任务的最小惩罚。。"
"这能优化?"
"能。"你说,"把式子改写成的形式。每个对应一个点,要找斜率的直线,截距最小。"
"凸包?"
"对。"你说,"维护下凸壳,用单调队列找最优决策点。"
你开始写。先把任务按排序,然后维护凸包。
"第一个任务。"你说,"。"
"第二个。"你说,"。"
"第三个。"你说,"。"
"如果按1,2,3的顺序。"你说,"总惩罚。"
"如果按2,1,3。"你说,"总惩罚。"
"如果按1,3,2。"你说,"总惩罚。"
"最优是1,3,2?"
"不对。"你说,"3的比2大,应该先做这个——惩罚系数大的先做。"
"那就是按降序。"
"对。"你说,"大的先做,减少它对后面任务的影响。"
"这就是斜率优化的直觉。"
"对。"你说,"直觉背后有数学。"
CC把任务列表刻在金属手臂上——用刀尖刻的,歪歪扭扭。
"刻这干啥子?"
"怕忘。"她说,"打仗的时候,脑子会空白。"
"你不会忘。"
"我会。"她说,"所以我刻下来。"
题目描述
给定个任务,第个有截止时间和惩罚系数。要安排一个执行顺序。如果任务在时刻完成且,惩罚为。求最小总惩罚。
输入格式
。然后行,每行。
输出格式
最小总惩罚。
输入样例
5
1 2 3 4 5
输出样例
311
提示
- 斜率优化DP。
- 为前个任务的最小惩罚。
- 任务按排序后,。
- 维护下凸壳,单调队列优化。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |