本题可以使用贪心算法 + 优先队列(小根堆)解决。
每批在时刻 i 入库的物品,其过期时刻为:
ei−1
在每个时刻发生出库时,为了让未来尽可能多的物品仍然可用,当前应该优先取出过期时间最早的物品。
共有 n 个时刻,编号 1 到 n。给定三个长度为 n 的整数数组 e,a,b。
按时刻 i=1,2,…,n 依次发生:
你可以任意选择取出哪些有效物品。请合理安排每次出库,使所有时刻缺货件数之和最小,输出该最小值。
第一行一个整数 n,表示时刻数。
第二行 n 个整数 e1,e2,…,en。
第三行 n 个整数 a1,a2,…,an。
第四行 n 个整数 b1,b2,…,bn。
输出一个整数,表示最小缺货总件数。
输入
3
3 4 3
2 1 1
1 3 1
输出
2
说明
时刻 1:入库 2 件(过期时刻 2),取出 1 件,剩 1 件。
时刻 2:入库 1 件(过期时刻 3),有效库存共 2 件,需求 3,缺货 1。无论先用哪一批,总缺货不变。
时刻 3:新入库过期时刻为 2,已失效;若时刻 2 已用尽库存,则此刻再缺 1。
总缺货 2。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册