欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42703.27-3 轮班清扫
27-3 轮班清扫
轮班清扫
任务排好了,但矿区还有一片废墟没清理——塌方的通道,碎裂的管道,散落的零件。
"要清扫。"CC说,"找人轮班,把路清出来。"
"多少人?"
"不多。"CC说,"就我们几个,加几个还能动的矿工。"
"那咋排班?"
"覆盖。"你说,"每个时段都要有人清扫。但人不能连轴转——最多连续工作小时,然后必须休息小时。"
"这是DS优化?"
"对。"你说,"用数据结构优化DP。设为覆盖到第个小时的最少人数。"
"转移?"
"从前面某个时段转移。"你说,",其中从到可以由一个人连续覆盖。"
"但连续工作不能超过小时。"
"对。"你说,"所以。"
"而且休息要小时——下一个人必须在之前开始?"
"不。"你说,"同一个人不能连续两段。但可以是不同的人。"
"那就是——只要之前有人覆盖,就可以加一个人覆盖到。"
"对。"
你开始写。用线段树维护区间最小值,快速查询。
"第1小时到第4小时。"你说,"一个人覆盖。。"
"第5小时到第8小时。"你说,"另一个人覆盖。。"
"第9小时到第12小时。"你说,"。"
"12小时,3个人轮班。"
"对。"你说,"每人干4小时,休息8小时。"
"如果只有2个人?"
"那就覆盖不了12小时。"你说,"2个人最多覆盖8小时(每人干4小时,不能重叠)。"
"人不够。"
"对。"你说,"所以我们要加快——每人干6小时,覆盖12小时,但会累。"
"累也得干。"
"对。"CC说,"累也得干。"
她把铁锹扛在肩上——那把从矿场带出来的铁锹,柄已经磨光了。
"我先干。"她说,"你们休息。"
"你刚爬过来。"
"我休息够了。"她说,"在碎石堆里,我睡了三天。"
"那不是睡。"
"那就是睡。"她说,"闭上眼,啥都不想。就是睡。"
题目描述
给定小时的清扫任务。每个人可以连续工作最多小时,然后必须休息。求覆盖全部小时所需的最少人数。
输入格式
。
输出格式
最少人数。如果无法覆盖,输出-1。
输入样例
5
1 2 3 4 5
输出样例
-1
提示
- DS优化DP(线段树/树状数组)。
- 为覆盖到第小时的最少人数。
- 。
- 用线段树维护区间最小值,快速查询。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |