会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
题目要求:选定一个基准任务 i,把左右相邻且显存占用「不低于」vram[i] 的任务尽量并进来,得到一个包含 i 的连续子数组,额度 =vram[i]× 子数组长度,求所有 i 中的最大额度。
关键观察:把「能合并多少」变成「边界在哪里」。 对固定的 i,往左能一直合并,直到遇到第一个严格小于 vram[i] 的任务为止;往右同理。设
- L[i]:i 左边第一个满足 vram[L]<vram[i] 的下标,不存在记 −1;
- R[i]:i 右边第一个满足 vram[R]<vram[i] 的下标,不存在记 n。