小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案。
在蔬菜仓库中,共存放有 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益。
在计算销售蔬菜的收益时,每销售一个单位第 种蔬菜,就可以获得 的收益。特别地,由于政策鼓励商家进行多样化销售,第一次销售第 种蔬菜时,还会额外得到 的额外收益。
在经营开始时,第 种蔬菜的库存为 个单位。然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已 经计算出了每个单位蔬菜变质的时间:对于第 种蔬菜,存在保鲜值 ,每天结束时会有 个单位的蔬菜变质,直到所有蔬菜都变质。(注意:每一单位蔬菜的变质时间是固定的,不随销售发生变化)
形式化地:对于所有的满足条件 的正整数 ,有 个单位的蔬菜将在 第 天结束时变质。 特别地,若 ,则有 单位的蔬菜将在第 天结束时变质。
注意,当 时,意味着这种蔬菜不会变质。 同时,每天销售的蔬菜,总量也是有限的,最多不能超过 个单位。
现在,小 N 有 个问题,想请你帮忙算一算。每个问题的形式都是:对于已知的 ,如果需要销售 天,最多能获得多少收益?
Constraints
, , ,
Solution
贪心可得,我们要尽量多地卖出收益高的,且尽量晚卖。对于一份蔬菜,拆成 和 两种,并钦定第一种过期时间最晚。
对于所有的蔬菜,我们先按价格从大到小排序。按照顺序处理方式为:从过期的最后一天开始尽量卖出,如果当前天已经满了就再往前卖。使用并查集可以保证复杂度。
对于询问,考虑从第 天到第 天的转移,贪心地丢弃最便宜的,且份数为从第 天开始卖出的蔬菜 从第一天到第 天的空隙。
Code
1 |
|