本题是一个带衰减约束的调度优化问题。有 n 个菌子(n≤15),每个菌子加工需 5 小时,总时间不超过 total 小时。每个菌子 i 有初始价值 vi 和衰减速度 di,若在第 j 个被加工(j 从 0 开始),实际价值为 vi−di×j×5。若实际价值 ≤0,则跳过不加工。求最大总价值。
核心观察:最优加工顺序是确定的——在所选菌子集合固定的情况下,应按照衰减速度 di 降序加工(衰减快的先加工,减少等待带来的损失)。这可以通过交换相邻菌子的贪心论证:若 da>db,则先加工 a 后加工 b 总是优于反过来。
基于此,算法为:
云南的菌子加工厂要加工一批野生菌,所有菌子同时进厂。由于菌子新鲜度随时间流失,价值不断衰减。工厂不能同时加工菌子,即逐个串行加工,正在加工的菌子价值不再衰减,加工完毕立即售卖。已知每个菌子的初始市场价值和新鲜度衰减速度(每小时损失的价值),菌子的实际价值 = 初始价值 − 衰减速度 × 从进入工厂到开始加工的等待时间。在给定时间内,合理安排加工顺序使得加工完成的菌子总价值最大化。
每个菌子的加工时间固定为 5 小时,加工所有菌子的总耗时不能超过给定的总加工时间。若菌子的实际价值衰减至零或负值,则不能再售卖,即不需要参与加工。
两个整数 count 和 total,count 表示菌子数量(1≤count≤15),total 表示可用的总加工时间(5≤total≤75,单位:小时)。
整型数组 values,values[i] 表示第 i 个菌子的初始市场价值,单位:元,共 count 个整数。
整型数组 decays,decays[i] 表示第 i 个菌子的衰减速度,单位:元/小时,共 count 个整数。
输出一个整数,表示在给定时间内能加工完成的菌子的最大总价值。
输入
3,15,[10,8,6],[0,0,0]
输出
24
说明
输入
3,20,[20,10,15],[3,1,2]
输出
25
说明
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.