AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3408. 工作安排

中等通过率 84% · 提交 607 · 通过 510
动态规划背包DP贪心DP

小慕每周都会收到一份项目任务清单,清单里包含n项任务,每项任务都有对应的耗时(单位:小时)和,任务的总报酬为所有已完成任务的报酬之和。请你帮小慕安排一下任务,确保在指定的工作时间内,他能获得最大的收入。

提示:带虚线的词点一下有通俗解释。

输入描述

输入的第一行为两个正整数T,n。T代表工作时长(单位h,0 < T < 100000) , n代表工作数量(1 < n < 3000) 接下来是n行,每行包含两个整数t,w。t代表该项工作消耗的时长(单位h,t > 0) ,w代表该项工作的报酬。

输出描述

输出小明指定工作时长内工作可获得的最大报酬。

示例

示例 1

输入

40 3
20 10
20 20
20 5

输出

30

示例 2

输入

100 3
50 10
20 30
50 20

输出

50

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
工作安排示例图解 总时长 T=40h,三项工作:A(20h,10元) B(20h,20元) C(20h,5元) 0h 40h 工作A (20h, 10元) 工作B (20h, 20元) 工作C (20h, 5元) 选择工作A和工作B,总耗时40h,总报酬=10+20=30元 工作C报酬低,不选,实现收入最大化 选中工作 未选工作
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「工作安排」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。