这道题本质上是一个经典的“相邻约束下的最小分配”问题,和常见的“分糖果”问题一致。
题目要求:
当前只有若干个并发的大模型推理服务器,推理资源紧张,但是有 N 个推理请求任务在申请推理服务中,每个推理服务都有一个优先级的分值,要求对每个推理请求任务分发推理资源,每个任务至少分配 1 千个 token 消耗的推理资源,相邻的两个任务,优先级越高的那个任务会获得更多的 token 数(X 千个 token 数)。请给每个推理请求任务分发 token,确保 N 个请求任务消耗的 token 数最少(X 千个 token)。
输入是一个优先级的数组,数值越大,优先级越高,例如:1,2,3
如果优先级小于等于 0 或者为空,该任务需要被放弃,不分配任务 token,它的相邻任务不与该任务进行优先级比较,只和另一个比较,例如:[1,−1,2] 的 token 总数是 2 千个。
输出:6(千个 token),分别给第一、二、三个任务分发 1 千、2 千、3 千个 token。
输入
10,10,5
输出
4
说明
分别给第一、二、三个任务分发 1 千、2 千、1 千个 token。
输入
4,2,6
输出
5
说明
分别给第一、二、三个任务分发 2 千、1 千、2 千个 token。