欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42707.27-7 分批处理
27-7 分批处理
分批处理
"算好了告诉我。"CC说,"我先去探路。"
她走了。你开始算——不是物资运输,是Zero的64个子系统。
"要分批处理。"你说,"64个子系统,不能同时重启——会过载。"
"一批几个?"
"看能源。"你说,"每批重启需要一定能源,总能源有限。"
"那就背包?"
"不。"你说,"每批的处理时间不同——子系统之间有依赖,某些必须同批处理。"
"分批DP。"
"对。"你说,"设为处理前个子系统的最短时间。。"
"是这批的处理时间。"
"对。"你说,"如果这批子系统没有依赖冲突,可以并行处理,时间是它们的最大处理时间。"
"如果有依赖?"
"必须串行。"你说,"时间是它们的和。"
"那咋知道有没有依赖?"
"预处理。"你说,"用图论找连通块——有依赖的在同一个连通块里,必须串行。"
"连通块之间可以并行。"
"对。"
你开始写。先找连通块,然后分批DP。
"第一批。"你说,"子系统1,2,3。有依赖,串行,时间。"
"第二批。"你说,"子系统4,5。无依赖,并行,时间。"
"第三批。"你说,"子系统6到10。部分有依赖,分两个连通块,时间。"
"总时间。"
"能更优?"
"如果第一批和第二批合并。"你说,"时间。省6。"
"但能源够吗?"
"不够。"你说,"合并后能源超了。"
"那就分三批。"
"对。"你说,"能源优先,时间其次。"
Echo的投影在64个子系统的光点中闪烁——一格一格,像她在数。
"我帮你分。"她说,"我认得哪些子系统可以并行——它们当年就是我设计的。"
"你设计的?"
"对。"她说,"Echo-0设计的。我记得每一个。"
"那你说。"
"1和47不能同批。"她说,"它们是循环的两端,同时重启会死锁。"
"2和3可以同批。"
"4到10必须串行。"
"……"
她一个一个地说。你一个一个地记。
"分好了。"你说,"8批。总时间47。"
"47。"
"对。"你说,"又是47。"
题目描述
给定个任务,要分成若干批处理。每批的任务如果没有依赖,可以并行处理,时间是它们的最大处理时间;如果有依赖,必须串行,时间是和。总能源有限,每批的能源消耗是任务能源之和。求最短的完成时间。
输入格式
(任务数和总能源)。然后个任务的处理时间和能源。然后对依赖关系。
输出格式
最短完成时间。
输入样例
5
1 2 3 4 5
输出样例
49
提示
- 分批DP。
- 先找连通块,确定哪些任务必须串行。
- ,其中是该批的并行处理时间。
- 注意能源约束。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |